对于一个项目,常用的一些npm简单命令包含的功能有:初始化一个文件夹( npm init ),下载npm模块( npm install ),创建测试( npm tese ) 和自定义脚本( npm run )。但是,进一步了解一些 npm 的使用技巧可以彻底改变你的日常开发任务。

注:如果你需要关于初学npm的参考,可以参阅我们的 初学者指南 。如果你对 npm 和 Yarn 之间的差异感到困扰,可以参阅我们发表的文章: Yarn vs npm:你需要知道的一切

1. 获取帮助

npm 文档 和 CLI 命令行文档 是非常不错地的学习资料,但需要通过浏览器访问,这并不是很方便。因而可以通过命令行快速获取所有可选项:

npm help

此外,还能获取特定 npm 命令的使用帮助:

npm help <command>

例如: npm help install

另一种方式是通过下面的命令:

npm <command> -h

2. npm 命令自动完成

npm 通过bash提供了命令自动完成功能(包括 Bash for Windows 10 ):

npm completion >> ~/.bashrc//or Z shellnpm completion >> ~/.zshrc

重新加载shell配置文件:

source ~/.bashrc

现在,在终端注入 npm ins ,然后按下 tab 键就会出现 install 了,不会再浪费时间去全部输入了。

3.修复全局模块的权限

当你试图安装全部模块时,类 Linux 系统可能会抛出权限错误,可以在npm命令之前添加 sudo来执行,但这是一个较危险的选择。一个更高的解决方式是改变 npm 默认的模块安装目录:

mkdir ~/.npm-global
npm config set prefix '~/.npm-global'

使用适当的文本编辑器将下面的一行添加到 ~/.bashrc 或者 ~/.zshrc 文件中:

export PATH="$HOME/.npm-global/bin:$PATH"

重新加载配置文件( source ~/.bashrc ),然后重新安装npm到用户所属路径:

npm install -g npm

这也会更新npm。

4.持续更新npm

你可以通过下面的命令显示npm当前的版本:

npm -v

如果有需要,可以通过下面的命令更新npm:

npm install -g npm

当 Node 的主版本 released 之后,你也可能需要重新构建 C++ 扩展:

npm rebuild

如果你需要管理多个版本的node.js和npm,可以考虑使用n 或者nvm。这有一篇关于 nvm 的文章: 使用 nvm 安装多版本的Node.js

5.定义默认的 npm init

使用 npm init 初始化一个新的项目,这会提示你关于项目的更多细节,并创建一个 package.json 文件。

如果你厌倦了每次开始一个新的项目都需要重新输入同样的信息,可以使用 -y 标记表示你能接受 package.json 文件的一堆默认值:

npm init -y

或者你可以设置一些语义化的默认值:

npm config set init.author.name <name>
npm config set init.author.email <email>

6.更精准的模块搜索

到目前为止,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。

7.管理你的模块

你已经安装了一些模块,看看都有啥:

npm list

ls 、 la & ll 可以用作 list 的别名)

该命令会显示所有模块:(安装的)模块,子模块以及子模块的子模块等。可以限制输出的模块层级:

npm list --depth=0

打开一个模块的主页:

npm home <package>

这只有在你的系统能打开浏览器时有用--在服务端的系统上会失败。同样,可以打开一个模块的 Github 仓库:

npm repo <package>

或者它的文档:

npm docs <package>

或者它目前的bugs列表:

npm bugs <package>

npm list 会显示和你已经安装地模块的关联模块---这些没有在 package.json 文件中被引用。你可以单独 npm uninstall 每一个模块或者全部移除它们:

npm prune

如果安装模块时你添加了 --production 标记或者 NODE_ENV 被设置成 production , package.json 文件中被指定为 devDependencies 的模块也会被移除。

8.锁定依赖

默认情况下,当用 --save/-S 或者 --save-dev/-D 安装一个模块时,npm 通过脱字符(^)来限定所安装模块的主版本号。例如,当运行 npm update 时, ^1.5.1 允许安装版本号大于 1.5.1但小于 2.0.0 版本的模块。

波浪号(~)字符是限定模块的次要版本。例如,当运行 npm update 时, ~1.5.1 允许安装版本号大于 1.5.1 但小于 1.6.0 版本的模块。可以将需要安装的模块版本前缀默认设置成波浪号(~):

npm config set save-prefix="~"

对于那些偏执的认为任何更新(模块的行为)会破坏系统的人,可以配置npm仅安装精确版本号的模块:

npm config set save-exact true

另一个选择是,可以在项目中使用 shrinkwrap :

npm shrinkwrap

这会生成一个 shrinkwrap.json 文件,该文件包含了你正在使用的模块的指定版本。当运行 npm install 时,该文件所指定的模块版本会覆盖 package.json 文件中所指定的版本。

9. 找出过时的模块

怎么知道一个模块已经更新了呢?我之前的方式是先列举出项目所依赖的模块( npm list --depth=0 ),然后在 npmjs.com 上找到该模块,手动检查该模块的版本是否已经更新。这非常费时。幸运的是,有一个更简单的方式:

npm outdated

或者 npm outdated -g 来查找全局模块。

你也可以查看一个独立模块的当前版本:

npm list <package>

也可以查看检验当前和历史版本:

npm view <package> versions

npm view <package> 会显示一个独立模块的所有信息,包括它的依赖、关键字、更新日期、贡献者、仓库地址和许可证等。

10.使用开发中的模块

当你正在开发一个模块时,会经常想在其它项目中尝试使用或者在任何一个目录运行它(如果你的应用支持),这时没必要将其发布到 npm,并全局安装---仅需在该模块所在目录使用下面的命令:

npn link

该命令会为模块在全局目录下创建一个符号链接。可以通过下面的命令查看模块引用:

npm list -g --depth=0

或者:

npm outdated -g

现在,就可以从命令行运行模块或者通过 require 在任何项目中引入该模块。

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

"dependencies": {"myproject": "file:../myproject/"
}

转载于:https://www.cnblogs.com/ExMan/p/6758316.html

10个 NPM 使用技巧相关推荐

  1. 提升你的开发效率,10 个 NPM 使用技巧

    对于一个项目,常用的一些npm简单命令包含的功能有:初始化一个文件夹( npm init ),下载npm模块( npm install ),创建测试( npm test ) 和自定义脚本( npm r ...

  2. 偏执却管用的 10 条 Java 编程技巧

    经过一段时间的编码(咦,我已经经历了将近20年的编程生涯,快乐的日子总是过得很快),我们开始感谢那些好习惯.因为,你知道- "任何可能出错的事情,最后都会出错." 这就是人们为什么 ...

  3. c语言哪个编译软件能够将整个工程自动生成调用图_这10个C语言技巧让初学者少走180天弯路!...

    硬件设计师最常见的工作内容是通过写代码来测试硬件.这10个C语言技巧(C语言仍然是常见的选择)可以帮助设计师避免因基础性错误而导致某些缺陷的产生并造成维护方面的困扰. 技巧 1:不要使用"G ...

  4. c语言goto语句用法_硬件工程师必知的10个C语言技巧

    硬件设计师最常见的工作内容是通过写代码来测试硬件.这10个C语言技巧(C语言仍然是常见的选择)可以帮助设计师避免因基础性错误而导致某些缺陷的产生并造成维护方面的困扰. 为了成功的推出一个产品,软件开发 ...

  5. react 代码编写原则_如何编写易读的React代码— 10种编码风格技巧

    react 代码编写原则 by Nirmalya Ghosh 由Nirmalya Ghosh 如何编写易读的React代码- 10种编码风格技巧 (How to write highly readab ...

  6. 【Java】国外大神总结的 10 个 Java 编程技巧!

    原文:http://www.javastack.cn/article/2018/10-java-programming-skills-summary/ 这是一个国外大神20多年的经验总结出来的-- & ...

  7. 精心总结了10个matplotlib绘图技巧,短小精悍,威力无穷!

    作者 | 刘早起       责编 | 欧阳姝黎 大家好,我是早起. 在使用 Python 进行数据可视化时,相信不论是什么工具,你都会发现有些操作/代码段会频繁的用到,这一点在matplotlib上 ...

  8. 每天看 10 个 NPM 模块?

    最近看到阿里前端技术专家狼叔在 17 年的这篇<迷茫时学习 Node.js 最好的方法>[1]提到: 今天小弟过来找我,说迷茫,我告诉他一个密法:一天看 10 个 npm 模块,坚持一年就 ...

  9. 2022前端应该掌握的10个 JS 小技巧

    你知道 0 ?? 1等于多少吗? 大家好,我是 LBJ,今天我们聊聊2022一些值得掌握的新特性! 现在前端发展很快,各种技术和框架层出不穷.百花齐放,很多人都喊学不动啦!事实上JavaScript ...

最新文章

  1. AJPFX关于Set接口学习笔记及总结
  2. 免费!「神策 2021 数据驱动大会」西安大数据技术专场来袭
  3. Android JNI入门第一篇——HelloJni
  4. Unity手游之路四3d旋转-四元数,欧拉角和变幻矩阵
  5. python namespace unique_Python使用uuid库生成唯一标识ID
  6. DateTime时间的比较问题
  7. linux vps 运行exe文件夹,linux 64位下安装wine1.6 Windows模拟器(用来运行.exe文件) 编译安装32位wine...
  8. stm32 web get 参数_BlackHat2020议题之Web缓存投毒
  9. 华为/华三IS-IS单区域配置
  10. 内存模型以及分区,需要详细到每个区放什么
  11. visual studio怎么用_自从用了敏捷,天天在开会?4大Scrum会议如何才能有意义?...
  12. ext2文件系统源代码之ext2.h
  13. 汇编 DOS系统功能调用
  14. IDEA 快捷键拆解系列(五):Navigate 篇
  15. 10_OpenCV读取原始raw(raw10和raw8),转换成rgb和灰度图,并显示
  16. Heavy Transportation - dijkstra
  17. 加速火狐(firefox)浏览器
  18. 解决方法:ERROR: Could not install packages due to an EnvironmentError: [Errno 2] No such file or directo
  19. 互联汽车:数字化正在颠覆汽车行业
  20. 2023年元旦倒计时案例

热门文章

  1. python如何连续查找字符串_在另一个字符串Python中多次查找字符串
  2. http状态 404 - 未找到_404终结者来了!
  3. idea:properties in parent definition are prohibited警告去除
  4. Java中堆和栈的概念与区别
  5. MySQL存储过程之查询受影响的行数与查询到的行数
  6. prim算法详解java_Prim算法(三)之 Java详解
  7. nginx重启命令方法(linux,centos,ubuntu)总结
  8. Spring工作原理详解
  9. 烂泥:dnsmasq搭建简易DNS服务器
  10. EasyUI基础入门之Pagination(分页)