npm命令

本文大纲
  1. 1. npm命令
  2. 2. 获取帮助
  3. 3. npm 命令自动完成
  4. 4. 修复全局模块的权限
  5. 5. 持续更新npm
  6. 6. 定义默认的 npm init
  7. 7. 更精准的模块搜索
    1. 7.1. npms
    2. 7.2. npm Discover
    3. 7.3. Packages by PageRank
    4. 7.4. Curated npm Lists
  8. 8. 管理你的模块
  9. 9. 锁定依赖
  10. 10. 找出过时的模块
  11. 11. 使用开发中的模块

npm命令

  • npm install 安装模块
  • npm bin 显示npm的bin目录
  • npm config delete 删除npm配置
  • npm config get 获取npm配置
  • npm config set [–global] 设置npm配置
  • npm config set proxy=http://proxy.tencent.com:8080 设置代理
  • npm config set registry http://npm.oa.com 设置npm的镜像地址
  • npm config edit 在编辑器中打开npm配置文件
  • npm init 交互式的创建package.json文件
  • npm pack 创建模块的压缩包,如果没有参数,则npm会打包当前模块目录
  • npm publish 发布模块
  • npm rm || npm uninstall 删除模块
  • npm search 查找模块
  • npm update 更新模块
  • npm start/stop/test 执行脚本

获取帮助

npm help
npm -h || npm help 例:npm help install

npm 命令自动完成

npm 通过bash提供了命令自动完成功能(包括Bash for Windows 10 ):
npm completion >> ~/.bashrc || (or Z shell) npm completion >> ~/.zshrc
重新加载shell配置文件: source ~/.bashrc
现在,在终端注入 npm ins ,然后按下 tab 键就会出现 install 了,不会再浪费时间去全部输入了。

修复全局模块的权限

持续更新npm

npm -v
npm install -g npm
当 Node 的主版本 released 之后,你也可能需要重新构建 C++ 扩展:npm rebuild
如果你需要管理多个版本的node.js和npm,可以考虑使用n或者nvm(Linux, macOS)

定义默认的 npm init

npm init -y 表示你能接受 package.json 文件的一堆默认值
或者你可以设置一些语义化的默认值:
npm config set init.author.name
npm config set init.author.email

更精准的模块搜索

到目前为止,npm上已经有超过350000个模块了,并且每天还在持续增长。尽管有很多非常棒的模块,但是你还是想避免使用一些不受欢迎的、存在bug的或者无人维护的模块。
在npmjs 和Github 上搜索npm模块是很实用但这还有一些其它选择:

npms

npms
根据一个基于项目版本、模块下载次数、最新更新日期、提交频率、测试覆盖率、文档、贡献者数量、issues数、star数、forks数和作者在社区的地位的综合测量分数进行模块排名。

npm Discover

npm Discover
定位于快速搜索和其它模块通常一起使用的模块,如
body-parser
通常和Express一起使用。

Packages by PageRank

Packages by PageRank
按照模块的谷歌排名进行搜索和排序。

Curated npm Lists

还一个选择就是利用别人的搜索结果。当需要一个健壮的解决方案时,我经常会参考
sindresorhus的Awesome Node.js。

管理你的模块

npm list (ls、la & ll 可以用作 list 的别名)
npm list –depth=0
npm home 打开一个模块的主页
npm repo 这只有在你的系统能打开浏览器时有用–在服务端的系统上会失败。同样,可以打开一个模块的 Github 仓库
npm docs 或者它的文档
npm bugs 或者它目前的bugs列表
npm prune npm list会显示和你已经安装地模块的关联模块—这些没有在 package.json文件中被引用。你可以单独 npm uninstall 每一个模块或者全部移除它们 (如果安装模块时你添加了 –production 标记或者 NODE_ENV 被设置成 production,package.json 文件中被指定为 devDependencies 的模块也会被移除。)

锁定依赖

默认情况下,当用 –save/-S 或者 –save-dev/-D 安装一个模块时,npm 通过脱字符(^)来限定所安装模块的主版本号。例如,当运行 npm update 时, ^1.5.1 允许安装版本号大于 1.5.1 但小于 2.0.0 版本的模块。
npm config set save-prefix=”“ 波浪号()字符是限定模块的次要版本。例如,当运行 npm update 时, 1.5.1 允许安装版本号大于 1.5.1但小于 1.6.0 版本的模块。可以将需要安装的模块版本前缀默认设置成波浪号()
npm config set save-exact true 对于那些偏执的认为任何更新(模块的行为)会破坏系统的人,可以配置npm仅安装精确版本号的模块:
npm shrinkwrap 另一个选择是,可以在项目中使用 shrinkwrap。 这会生成一个 shrinkwrap.json 文件,该文件包含了你正在使用的模块的指定版本。当运行 npm install时,该文件所指定的模块版本会覆盖 package.json 文件中所指定的版本。

找出过时的模块

怎么知道一个模块已经更新了呢?我之前的方式是先列举出项目所依赖的模块(npm list –depth=0),然后在 npmjs.com 上找到该模块,手动检查该模块的版本是否已经更新。这非常费时。幸运的是,有一个更简单的方式:
npm outdated (或者 npm outdated -g 来查找全局模块。)
npm list 你也可以查看一个独立模块的当前版本
npm view versions 也可以查看检验当前和历史版本 (npm view 会显示一个独立模块的所有信息,包括它的依赖、关键字、更新日期、贡献者、仓库地址和许可证等。)

使用开发中的模块

当你正在开发一个模块时,会经常想在其它项目中尝试使用或者在任何一个目录运行它(如果你的应用支持),这时没必要将其发布到 npm,并全局安装—仅需在该模块所在目录使用下面的命令:
npn link 该命令会为模块在全局目录下创建一个符号链接
npm list -g –depth=0 || npm outdated -g 可以通过下面的命令查看模块引用
现在,就可以从命令行运行模块或者通过 require 在任何项目中引入该模块。

另一个选择是,可以通过文件路径在 package.json 文件中声明对该模块的依赖:

“dependencies”: {
“myproject”: “file:../myproject/“
}