npm Basic

10th March 2020 at 9:07am
Node.js: Packaging

npm 基础

npm help <command> 命令会显示 npm 的 man page,内容非常详细。

安装 / 卸载包

安装全局包:

$ [sudo] npm install -g <package_name>

$ # Example:
$ sudo npm install -g http-server
/usr/bin/http-server -> /usr/lib/node_modules/http-server/bin/http-server
/usr/bin/hs -> /usr/lib/node_modules/http-server/bin/http-server
/usr/lib
└── http-server@0.9.0 

但好的实践是,不要/usr/lib/node_modules/ 下安装东西,防止跟 pacman 安装的某些包冲突。可以这样做:

  1. npm config set prefix "${HOME}/.local"
  2. ~/.zshrc 中增加 ${HOME}/.localPATH

安装本地包:

$ npm install <package_name>

卸载软件包:

$ npm remove [-g] <package_name>

更新包

你可以用 npm outdated 命令查看哪些包不是最新的:

  1. 对于全局环境,它会检查全部全局包是不是最新的
  2. 对于本地项目环境,它会在 package.json 限定的范围内检查包是不是最新的
    • 比如 package.json 定义了库 A 的版本应该是 14.x.x,那么假如库 A 的最新版本是 15.x.x,npm outdated 也只会显示 14.x.x 中的最新版本

更新单个包:

$ npm install [-g] <pacakge_name>

更新全部包:

$ npm update [-g]

package.json

参考 官方文档

一个 package.json 至少包含 name, version 字段。可以用 npm init --yes 来创建一个最简的 package.json,用 npm init 交互式地创建一个详细 package.json

dependenciesdevDependencies 分别表示运行时 / 开发时的依赖,在开发阶段时,你可以用 npm install <pacakge_name> --save/--save-dev 来向这两个字段增加一个新的包。当你拿到一份其他的人源码,你进去它的目录中 npm install 时,默认会把 dependenciesdevDependencies 中的包都安装进去,除非你给 npm install 指定了 --production 选项,或者 NODE_ENV 环境变量为 production

同理,删除包后如果想要它也在 package.json 中被删除:npm uninstall --save/--save-dev <package_name>

scripts 中有一些脚本有 alias,比如 npm start 运行的是 scripts 中的 start 脚本;npm test 同理。

查看已安装的包

$ npm ls [-g]
$ npm ls [-g] --depth=0
$ npm ll [-g]

淘宝镜像

设置 register 配置以使用淘宝镜像:

$ sudo npm config -g set registry "https://registry.npm.taobao.org/"

设置全局配置,使得 npm install 时,无论装本地包还是全局包都使用这个镜像。