如果项目具有package.json文件,则通过运行:
npm install
会在node_modules文件夹(如果尚不存在则会创建)中安装项目所需的所有依赖。
可以通过运行以下命令安装特定的软件包:
npm install
通常会在此命令中看到更多标志:
--save
在新版本npm中为默认配置,表示安装并添加条目到package.json文件的dependencies
(依赖)。--save-dev
表示安装并添加条目到package.json文件的devDependencies
(开发依赖)。通过运行以下命令,更新也变得很容易:
npm update
npm会检查所有软件包是否有满足版本限制的更新版本。
也可以指定单个软件包进行更新:
npm update
除了简单的下载外,npm还可以管理版本控制,因此可以指定软件包的任何特定版本,或者要求版本高于或低于所需版本。比如在一些时候,一个库仅与另一个库的主版本兼容,或者一个库的最新版本中有一个未修复的缺陷引起了问题。指定库的显式版本还有助于使每个人都使用相同的软件包版本,以便整个团队运行相同的版本,直到package.json文件被更新。在所有这些情况中,版本控制都有很大的帮助,npm遵循语义版本控制标准。
若要查看所有已安装的npm软件包(包括它们的依赖包)的最新版本,则:
npm list
也可以打开package-lock.json和package…json文件查看。
可以使用@语法来安装npm软件包的指定版本:
npm install @
示例:
npm install webpack
以上命令会安装最新版本。
使用以下命令可以安装1.2.0版本:
npm install webpack@1.2.0
全局的软件包也可以这样做:
npm install -g webpack@4.16.4
可能还有需要列出软件包所有的以前的版本。可以使用npm view
:
npm view webpack versions
[ '1.0.0',
'1.0.1',
'1.0.2',
'1.0.3',
'1.1.0',
'1.1.1',
'1.1.2',
'1.1.3',
'1.1.4',
'1.1.5',
'1.1.6',
'1.1.7',
'1.1.8',
'1.1.9',
'1.2.0',
'1.2.1',
'1.3.0',
'1.3.1' ]
npm不仅可以用于模块管理,还可以用于执行脚本。package.json文件有一个scripts
字段,可以用于指定脚本命令,供npm直接调用。可通过使用以下方式运行:
npm run
npm run
命令会自动在环境变量$PATH
中添加node modules/.bin
目录,所以scripts
字段里面调用命令时不用加上路径。
npm run
如果不加任何参数,直接运行,会列出package.json里面所有可以执行的脚本命令。
npm内置了两个命令简写,npm test
等同于执行npm run test
,npm start
等同于执行npm run start
。
例如:
{
"scripts": {
"start": "node server.js"
},
}
直接运行npm start
相当于运行node server.js
。
使用此特性运行Webpack是很常见的:
{
"scripts": {
"watch": "webpack --watch --progress --colors --config webpack.conf.js",
"dev": "webpack --progress --colors --config webpack.conf.js",
"prod": "NODE_ENV=production webpack -p --config webpack.conf.js",
},
}
因此可以运行如下,而不是输入那些容易忘记或可能输错的长命令:
npm run watch
npm run dev
npm run prod
当使用npm安装软件包时,可以执行两种安装类型:本地安装和全局安装。
默认情况下,当输入npm install
命令时,例如:
npm install lodash
软件包会被安装到当前文件树中的node modules子文件夹下。在这种情况下,npm还会在当前文件夹中存在的package.json文件的dependencies
属性中添加lodash
条目。
使用-g
标志可以执行全局安装:
npm install -g lodash 或 npm install lodash -g
在这种情况下,npm不会将软件包安装到本地文件夹下,而是使用全局的位置。那么,全局的位置到底在哪里?
执行如下命令,会告知其在计算机上的确切位置:
npm root -g
在macOS或Linux上,此位置可能是
/usr/local/lib/node_modules
在Windows上,可能是
C:\Users\YOU\AppData\Roaming\npm\node_modules
官方文档
若要卸载之前在本地安装(在node_modules文件夹使用npm install
安装)的软件包,则从项目的根文件夹(包含node_modules文件夹的文件夹)中运行:
npm uninstall
Description
This uninstalls a package, completely removing everything npm installed on its behalf.
It also removes the package from thedependencies
,devDependencies
,optionalDependencies
, andpeerDependencies
objects in yourpackage.json
.
Further, if you have annpm-shrinkwrap.json
orpackage-lock.json
, npm will update those files as well.
--no-save
will tell npm not to remove the package from yourpackage.json
,npm-shrinkwrap.json
, orpackage-lock.json
files.
对于老版本npm: 若想移除package.json文件中的引用需要使用使用-S
或--save
标志;如果程序包是开发依赖项(在package.json文件的devDependenciest
中列出了),则必须使用-D
或--save-dev
标志从文件中移除。
如果该软件包是全局安装的,则需要添加-g
或--global
标志进行卸载:
npm uninstall -g
例如:
npm uninstall -g webpack
可以在系统上的任何位置运行此命令,因为当前所在的文件夹无关紧要。
当修改了package.json某一个模块的版本信息后,用npm i
更新模块,会得到该模块在package.json限定的大版本下的最新模块。
例如:lodash有4.0.0、4.1.0、4.2.0版本,当前项目中lodash版本为4.0.0,将package.json中lodash版本改成了4.1.0后,执行npm i
更新后会发现,下载到的版本为4.2.0。同时package-lock.json中记录的也是4.2.0。
注意:如果你需要的是4.1.0版本的lodash,那么,不需要修改package.json文件,可以直接通过npm install [email protected]
下载指定版本的lodash。
package.json和package-lock.json保证了大家在协同开发的时候,所用的依赖模块版本保持一致。当项目新增了一个依赖模块,要把package.json和package-lock.json一起上传到代码托管平台或者发给别人,这样别人下载项目的时候去更新模块信息,就能得到一模一样的模块版本。