npm install 和npm ci 命令

323 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第22天,点击查看活动详情

我们已经知道,npm 其实就是一个JavaScript 软件包管理工具。知道了它的概念之后,我们就要学习如何去使用它了。

npm install

在npm 中,最常用的命令就是npm install 命令,其一般格式为:npm install <package-name> <version>

在没有项目上下文的情况,运行上述命令,那么npm 将会安装对应名称,对应版本的软件包。假如版本带有^ 符号,那么npm 将会安装软件包的最新版本;而对于存在项目上下文的环境中,运行npm insall 命令,那么npm 就会依据package.json 中的规范内容,将符合规范的软件包下载到项目的node_modules 文件夹中去。这样,如果package.json 文件中的版本号前带有^ 符号,那么项目中的软件包版本就会被重新升级,同时package-lock.json 文件也会重新生成。

另外,npm 也提供了为自己电脑的全局范围内安装软件包的命令。这样,如果在全局范围内安装了相关的软件包,那么在电脑的的任何地方都可以使用。我们可以为安装命令指定全局标志-g。

另外需要说明的是,虽然npm 工具可以使安装JavaScript 相关软件包变得非常容易,但是开发者经常会错误地使用这个命令,这样就导致会下载很多不需要使用到的软件包。

虽然使用npm 安装软件包会有太大、太深这样的问题,但是这些问题是可以通过--production 这类命令标志来挽救。在之前我们讨论过在package.json 中的分别用于生产环境和开发环境的dependenciesdevDependencies 两个属性,这两个属性就是和--production 标志相关的。我们在使用这个命令标志的时候,是通过将此标志加到npm install 命令之上的。如果选择使用--production 标志,那么我们将仅从 dependencies 属性的内容规范中安装软件包。这样一来,node_modules 文件夹的大小就会减少很多。

npm ci

在上面我们介绍了npm install --production 命令对于生产环境是非常友好的。但是我们转念一想,npm 是否有一个对本地环境,最友好的选项呢?npm 肯定是考虑到这一点了,这个命令就是:npm ci

如果package_lock.json 在项目中不存在,那么用户无论什么时候调用npm install 命令都会生成package_lock.json 文件,npm ci  会使用这个文件来下载项目所依赖的每个软件包的确切版本。通过这种方式,我们就可以在不同的环境都使用相同版本的依赖了。

总结

这篇文章主要是说明了两个命令:npm install & npm ci 的不同用法,通过这两个命令,我们可以细致地了解npm 的全貌了。