浅谈 Node.js 中的 npm

主要介绍 npm 中的各个选项的作用以及其区别。npm 依赖于 Node.js, 童鞋们要注意你的系统是否有 Node.js 环境

npm 是什么

NPM 的全称是 Node Package Manager, 是随同 Node.js 一起安装的包管理和分发工具, 它很方便让 JavaScript 开发者下载、安装、上传以及管理已经安装的包。

npm install 安装模块

安装包, 默认会安装最新的版本, 最后所有的依赖会存放在 node_modules 目录下的, 如:

$ npm install gulp

全局安装

只需加上 -g 或者 --global 参数, 就可以实现全局安装, 如:

$ npm install gulp -g

安装指定版本

$ npm install gulp@3.9.1

-S, —save

添加模块命令

$ npm install [module-name] --save
$ npm install [module-name] -S

作用

自动把模块和版本号添加至 package.jsondependencies (生产阶段的依赖)部分, 避免了手动添加。

package.json 文件的 dependencies 字段:

"dependencies": {
  "[module-name]": "^[version]"
}

-D, —save-dev

添加模块命令

$ npm install [module-name] --save-dev
$ npm install [module-name] -D

作用

自动把模块和版本号添加至 package.jsondevDependencies (开发阶段的依赖)部分, 避免了手动添加。

package.json 文件的 devDependencies 字段:

"devDependencies": {
  "[module-name]": "^[version]"
}

-O, —save-optional

添加模块命令

$ npm install [module-name] --save-optional
$ npm install [module-name] -O

作用

自动把模块和版本号添加至 package.jsonoptionalDependencies (可选阶段的依赖)部分, 避免了手动添加。

package.json 文件的 optionalDependencies 字段:

"optionalDependencies": {
  "[module-name]": "^[version]"
},

-E, —save-exact

添加模块命令

$ npm install [module-name] --save-exact
$ npm install [module-name] -E

作用

自动把模块和版本号添加至 package.jsondependencies (精确安装指定模块版本)部分, 避免了手动添加。需要注意的是: package.json 文件的 dependencies 字段, 版本号中的 ^ 消失了

package.json 文件的 dependencies 字段

"dependencies": {
  "[module-name]": "[version]"
}

npm 其他命令

创建 package.json 文件

安装包的信息可保持到项目的 package.json 文件中, 以便后续的其它的项目开发或者他人合作使用, 也说 package.json 在项目中是必不可少的。

$ npm init

安装模块

模块的依赖都被写入了 package.json 文件后, 他人打开项目的根目录(项目开源、内部团队合作), 时, 只需一条命令就可以安装 package.json 中的依赖。

$ npm install

加上 --save 会安装 package.jsondependencies 里的所有模块。

$ npm install --save

卸载模块

想要卸载模块也很简单。

$ npm uninstall [module-name]

以上写法并不会改变 package.json 文件, 使用 -S | --save | -D | --save-dev | -O | --save-optional 选项即可删除 package.json 文件中的依赖。

如使用 --save 选项, 将会删除 package.json 文件 dependencies 中的该模块名和版本号。

$ npm uninstall [module-name] --save

更新模块

从服务器下载最新版本的模块。需要注意的是, 最新版本的模块并不是最稳定的, 模块还是选择相对稳定的版本较好。支持 -g 选项。

$ npm update [-g] [module-name]

检查模块是否已经过时

此命令会列出所有已经过时的包, 可以及时进行包的更新.

$ npm outdated

启动模块

npm start [-- <args>]

该命令写在 package.json 文件 scriptsstart 字段中, 可以自定义命令来配置一个服务器环境和安装一系列的必要程序, 如:

"scripts": {
  "start": "gulp -s"
}

如果 package.json 文件没有设置 start , 则将直接启动 node server.js

停止模块

npm stop [-- <args>]

重新启动模块

npm restart [-- <args>]

更新模块

可以安装全局插件

npm install -g npm-check-updates

查看最新的版本

npm-check-updates
ncu # 为上一条指令的缩写

升级至最新版本

ncu -a

在使用下载最新的安装包

npm update

当然, 如果所有包都是最新版本, 执行 ncu 后会提示:

All dependencies match the latest package versions :)

查看包的安装路径

输出 node_modules 的路径, 支持 -g 选项。

$ npm root [-g]

管理 npm 的配置路径

对于 config 这块用得最多应该是设置代理, 解决 npm 安装一些模块失败的问题

$ npm config set <key> <value> [-g|--global]
$ npm config delete <key>
$ npm config list

查看命令的帮助

$ npm help <command>

区别

  1. --save-dev 是你开发时候依赖的东西; --save 是你发布之后还依赖的东西。
  2. --save-optional 是可选依赖, 非必下; --save-exact 可以指定精确的版本号, 也就是说当发布了新版本, 系统不会系在最新版本的模块, 只会下载该版本的模块。
  3. npm install 下载依赖时会安装 package.jsondependenciesdevDependencies 里的所有模块。
  4. npm install --save 下载依赖时只会安装 package.jsondependencies 里的所有模块。
  5. 比如, 你写 ES6 代码, 如果你想编译成 ES5 发布那么 babel 就是 devDependencies
  6. 如果你用了 jQuery , 由于发布之后还是依赖 jQuery , 所以是 dependencies
  7. 最常用的还是 npm 中的 --save--save-dev 选项。 --save--save-dev 选项。
亲!!! 听说给作者打赏一杯咖啡钱,会给自己带来好运哦!