本文由Vildan Sortic , Matt Burnett和Tom Greco进行了同行评审。 感谢所有SitePoint的同行评审人员使SitePoint内容达到最佳状态!
尽管Facebook的新Yarn项目令人兴奋,但Node.js的持续成功很大程度上归功于其原始的软件包管理器npm 。
只需几个简单的npm命令即可初始化文件夹( npm init ),下载软件包( npm install )并创建测试( npm test )和自定义脚本( 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(包括Windows 10的Bash )的系统提供命令自动完成功能:
npm completion >> ~/.bashrc
或Z shell:
npm completion >> ~/.zshrc
重新加载外壳配置文件,例如
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 install -g npm
发布新的主要版本的Node时,您可能还需要重建C ++插件:
npm rebuild
更进一步,如果您需要管理多个版本的Node.js和npm的更新,请考虑使用诸如nvm和n之类的选项。 我们也有关于它的教程: 快速提示:使用nvm安装Node.js的多个版本
5.定义npm init默认值
新项目文件夹使用npm init
。 这会提示您有关项目的更多详细信息,并创建一个初始package.json
文件。
如果您在每次启动新项目时都厌倦了重新键入相同的信息,则可以使用-y
标志接受一堆默认值:
npm init -y
或者,您可以为npm设置一些合理的默认值以使用:
npm config set init.author.name <name>
npm config set init.author.email <email>
6.精致的包裹搜索
在撰写本文时,npm上有超过350,000个软件包可用,每天都有更多软件包出现。 尽管很多功能很棒,但您可能希望避免使用不太受欢迎,越野车或停产的产品。 在npmjs.com和GitHub上搜索是可行的,但还有其他选择……
npms
npms对软件包进行排名,以根据项目版本,下载次数,最新更新日期,提交频率,测试覆盖范围,文档,贡献者数量,问题,星级,分支甚至作者的地位提供总体质量得分。社区。
npm发现
npm Discover可以找到其他人常用的软件包,例如Express的body-parser 。
由PageRank打包
PageRank的软件包按相关的Google排名搜索和排序npm软件包。
策划的npm列表
或者,利用他人的搜索成功。 我常常把真棒的Node.js从sindresorhus寻找一个强大的解决方案的时候。
7.管理您的包裹
您已经选择了软件包并安装了依赖项。 让我们列出我们拥有的:
npm list
( ls
, la
和ll
可以用作list
别名)。
该列表显示了所有内容:包,子包,子包的子包等。使用以下命令将输出限制为仅顶级包:
npm list --depth=0
可以通过以下方式打开软件包主页:
npm home <package>
这仅在您的系统可以打开浏览器的情况下才有效–在OS Server版本上将失败。 同样,您可以打开包的GitHub存储库:
npm repo <package>
或其文档:
npm docs <package>
或当前的错误列表:
npm bugs <package>
当安装了无关的软件包时, npm list
报告-这些软件包在package.json
文件中不再引用。 您可以npm uninstall
它们,或使用以下方法将其全部删除:
npm prune
如果添加--production
标志或将NODE_ENV
环境变量设置为production
,则还将删除package.json
指定为devDependencies
软件包。
8.锁定依赖性
默认情况下,在使用--save
或--save-dev
安装软件包时,npm会使用脱字符( ^
)引用软件包版本号。 这会将软件包固定到其主要版本号。 例如,运行npm update
时, ^1.5.1
允许安装该版本至2.0.0
但不包括2.0.0
任何版本。
较为保守的波浪号( ~
)字符会将程序包固定到次要版本。 例如, ~1.5.1
允许在npm update
时安装该版本到1(但不包括1.6.0
。 可以使用以下命令将代字号前缀设置为默认值:
npm config set save-prefix="~"
对于那些担心可能破坏系统的更新的人,可以将npm配置为仅使用确切的版本号:
npm config set save-exact true
或者,您可以使用以下方法收缩项目 :
npm shrinkwrap
这将生成一个npm-shrinkwrap.json
文件,其中包含您正在使用的依赖项的特定版本。 默认情况下使用此文件,并且在运行npm install
时将覆盖package.json
。
9.查找过时的模块
您如何知道依赖项已更新的时间? 我使用了几个月的过程是列出我的依赖项( npm list --depth=0
),在npmjs.com上搜索软件包,然后手动检查哪个版本号已更改。 数小时的乐趣。 幸运的是,有一个更简单的选择:
npm outdated
或者对于npm本身之类的全局软件包, npm outdated -g
。
您还可以查看单个软件包的当前版本:
npm list <package>
并检查当前和历史版本:
npm view <package> versions
npm view <package>
显示有关单个软件包的所有信息,包括其依赖性,关键字,更新日期,贡献者,存储库,许可证等。
10.使用开发包
开发软件包时,您通常希望在其他项目中尝试使用它们,或者从任何目录中运行它们(如果您的应用程序支持的话)。 无需将软件包发布到npm注册表并进行全局安装-只需使用:
npm link
从包文件夹中。 这将在该程序包的全局文件夹中创建一个符号链接。 使用时,您将看到参考资料:
npm list -g --depth=0
要么
npm outdated -g
现在,您可以从命令行运行软件包,或将其包含在任何带有require
项目中。
另外,您还可以在package.json
通过filepath声明依赖关系,例如
"dependencies": {
"myproject": "file:../myproject/"
}
因此,这些是我最喜欢的npm技巧,但我错过了其中一个吗? 欢迎发表评论…