赞
踩
Node.js® is a JavaScript runtime built on Chrome’s V8 JavaScript engine.
Node.js 可以解析JS代码(没有浏览器安全级别的限制)提供很多系统级别的API,如:
文件的读写 (File System)
进程的管理 (Process)
网络通信 (HTTP/HTTPS)
Node.js的包管理工具
$ npm install forever --global (-g)
将安装好的包信息配置到package.json中开发依赖(devDependencies)分组
//方式一
$ npm install forever --dev-save
//方式二
$ npm install forever --save-dev
//方式三
$ npm install forever -D
将安装好的包信息配置到package.json中生产环境依赖(dependencies)分组
//方式一
$ npm install forever --save
//方式二
$ npm install forever -S
不将安装好的包信息配置到package.json
$ npm install forever
$ npm install forever @1.8.0
$ npm install forever @1.8.0 -S
若局部安装命令中有dev
或-D
,则会在package.json多一个devDependencies分组,叫开发依赖,言简意赅,该分组下的包只会在开发时使用,项目上线和测试时不使用。若局部安装命令中没有dev
或-D
,则安装的包信息会配置在dependencies分组中,这个分组叫生产环境依赖。
如果只想安装生产环境所依赖的包,需执行
$ npm i --production
查看本地安装中过期的包(即不是最新的版本的包)
$ npm outdated //~2.0.0表示patch, ^2.0.0表示minor * 表示xx最新版本
执行这一命令时会根据package.json中该包的配置信息进行更新
可见jquery的版本信息有^
,该符号的意思是只锁定主版本号,所以执行npm update
更新后jquery会更新到jquery2.x.x的最新版本。
可见jquery的版本信息有~
,该符号的意思是锁定次版本号,所以执行npm update
更新后jquery会更新到jquery2.0.x的最新版本。
若版本号前边什么符号都没有,所以执行npm update
后package.json中版本号是多少就会安装该版本的包。
若版本号是*
则执行npm update
后会自动安装当前最新版本的包
注意:jquery并没有2.0.0版本,以上只为说明各符号作用。
更新包
$ npm update
$ npm uninstall forever --global
//方式一
$ npm uninstall forever --save
//方式二
$ npm uninstall forever
$ npm init -y
若下载包的过程中意外中断,导致后续无法下载安装这个包,则可清理缓存后,再继续下载。
$ npm cache clean --force
Node 开发离不开 npm,而脚本功能是 npm 最强大、最常用的功能之一。
npm 允许在 package.json 文件里面,使用 scripts 字段定义脚本命令。
{
// ...
"scripts": {
"build": "node build.js",
"dev": "gulp -v"
}
}
如果 npm 脚本里面需要执行多个任务,那么需要明确它们的执行顺序。
script1.js
var x = 0
console.log(x)
script2.js
var y = 0
console.log(y)
"scripts": {
"script1": "node script1.js",
"script2": "node script2.js"
}
如果是并行执行(即同时的平行执行),可以使用 & 符号。
$ npm run script1 & npm run script2
如果是继发执行(即只有前一个任务成功,才执行下一个任务),可以使用 && 符号。
$ npm run script1 && npm run script2
常用的 npm 脚本简写形式。
npm start 是 npm run start
npm 脚本有一个非常强大的功能,就是可以使用 npm 的内部变量。
首先,通过 npm_package_ 前缀,npm 脚本可以拿到 package.json 里面的字段。比如,下面是一个 package.json。
注意:一定要在 npm 脚本中运行(如:npm run view)才可以,直接在命令行中运行JS(如:node view.js)是拿不到值的
{
"name": "foo",
"version": "1.2.5",
"scripts": {
"view": "node view.js"
}
}
那么,变量 npm_package_name 返回 foo,变量 npm_package_version 返回 1.2.5。
// view.js
console.log(process.env.npm_package_name); // foo
console.log(process.env.npm_package_version); // 1.2.5
上面代码中,我们通过环境变量 process.env 对象,拿到 package.json 的字段值。如果是 Bash 脚本,可以用$npm_package_name 和 $npm_package_version 取到这两个值。
npmpackage前缀也支持嵌套的package.json字段。
"repository": {
"type": "git",
"url": "xxx"
},
scripts: {
"view": "echo $npm_package_repository_type"
}
上面代码中,repository 字段的 type 属性,可以通过 npm_package_repository_type 取到。
下面是另外一个例子。
"scripts": {
"install": "foo.js"
}
上面代码中,npm_package_scripts_install 变量的值等于 foo.js。
然后,npm 脚本还可以通过 npmconfig 前缀,拿到 npm 的配置变量,即 npm config get xxx 命令返回的值。比如,当前模块的发行标签,可以通过 npm_config_tag 取到。
"view": "echo $npm_config_tag",
注意,package.json 里面的 config 对象,可以被环境变量覆盖。
{
"name" : "foo",
"config" : { "port" : "8080" },
"scripts" : { "start" : "node server.js" }
}
上面代码中,npm_package_config_port 变量返回的是 8080。这个值可以用下面的方法覆盖。
$ npm config set foo:port 端口号
最后,env命令可以列出所有环境变量。
"env": "env"
NRM (npm registry manager)是npm的镜像源管理工具,有时候国外资源太慢,就可以使用nrm
就可以快速地在 npm 源间切换。
$ npm config get registry
$ npm config set registry https://registry.npm.taobao.org
npm install -g nrm
,全局安装nrm。nrm ls
查看可选的源。nrm use taobao
nrm test
npm 从5.2版开始,增加了 npx 命令。Node 自带 npm 模块,所以可以直接使用 npx 命令。如果不能用,就要手动安装一下。
$ npm install -g npx
注意,只要 npx 后面的模块无法在本地发现,就会下载同名模块到一个临时目录,使用以后再删除。所以,以后再次执行下面的命令,会重新下载 http-server,在当前目录启动一个 Web 服务。
$ npx http-server
加油!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。