这篇文章会为你揭示一些有用的 npm 技巧,由于篇幅原因不可能涵盖所有,所以我选择了工程师日常相关且有用的作为本篇文章的关注点。
为了大家保持一致,特别是新人,首先我们来快速浏览一些基础的简写。
通常:
npm install pkg
简写:
npm i pkg
Installing a package globally:
通常:
npm i --global pkg
简写:
npm i -g pkg
Installing a package and save it as a dependency:
通常:
npm i --save pkg
简写:
npm i -S pkg
Installing a package and save it as a devDependency:
通常:
npm i --save-dev pkg
简写:
npm i -D pkg
更多的简写请看官网:https://docs.npmjs.com/misc/config#shorthands-and-other-cli-niceties
接下来让我们开启有趣之旅:
我们都知道 npm init ,是当我们初始化一个package的第一件事。
但是,这些问题很烦人,所以为什么不避免它呢?
使用
npm init -ynpm init -f
来解救!
另一个我们都会用的命令是 npm test
,我们中的大多数人会每天使用,甚至一天几次。
幸运的是,使用 npm t
,可以做相同的事!
当我们接手一个新项目时,会考虑如何开始手头的工作。我们经常会自问:我们如何运行项目?有哪些脚本命令可以使用?
一种方法是找到package.json文件然后查看里面的 scripts
部分。
当然我们可以做的更优雅一些,可以简单的运行 npm run
来列出所有可使用的脚本命令。
另外还可以安装 ntl
( npm i -g ntl
),然后在项目文件夹下运行 ntl
,同时还支持运行脚本。
就像上面一样,有时候我们还会自问项目中都有哪些依赖。
我们同样可以打开package.json文件然后查看,但是我们已经知道我们可以做的更好。
使用 npm ls --depth 0
列出全局安装的包,我们可以使用同样的 -g
的标识, npm ls -g --depth 0
。
在项目中我们安装了一个附带可执行文件的包,但是只有当我们通过 npm script 运行是才可用,你或许会惊奇为何?或知道如何避免它?
首先,我们来理解一下为何--当我们在控制台运行命令时,实际上是在系统环境变量的 PATH
下列出的所有paths中,寻找同名的可执行文件。这就是为何在任何地方都可执行的原因。本地安装的包是把它们的可执行命令注册在本地的,没有被列在 PATH
中,所以不会被找到。
你或许会问:为何在通过 npm script 就可执行?好问题!当以这种方式运行时,npm 做了一些小技巧就是在我们的 PATH
中增加了额外的目录
<project-directory>/node_modules/.bin。
你可通过运行 npm run env | grep "$PATH"
来查看,你同样可运行 npm run env
来查看所有环境变量,npm 增加了一些有趣的东西在里面。
我们在项目目录下运行 ./node_modules/.bin/mocha
来实际看看效果
是不是很简单?无论何时你想运行本地安装的可执行文件,只要简单的敲入 ./node_modules/.bin/<command>
。
你或许会在package.json中发现仓库的地址,同时想问此安装包有什么功能? 简单的运行 npm repo
就会在浏览器中打开该仓库地址。 同样运行 npm home
命令就会打开 homepage
的入口。 如果你想在 npmjs.com 中打开包的页面,有一个贴心的命令: npm docs
你可能对类似 pretest 的脚本属性,它可以帮你在运行 test 脚本之前定义一些代码。 真正会使你惊奇的是,你同样可以在自定义脚本中使用!
当你把 npm 作为你的构建工具或者有许多脚本要执行时,这种功能就会很有用。
你有一个包,同时使用 semver 做为你的版本记录标准,在你发布新包之前需要填写新的版本号。 其中一种方法就是你打开 package.json 文件然后改变里面的值,但是我们可以不需要这样做。 另一个简单的方法是运行 npm version
并附带上 major
, minor
或者 path
。