npm基本使用

  • npm,即node package manager,是Node.js标准的软件包管理器。
  • npm可以管理项目依赖的下载。
  • 官方文档

安装软件包 npm install

安装所有依赖

如果项目具有package.json文件,则通过运行:

npm install

会在node_modules文件夹(如果尚不存在则会创建)中安装项目所需的所有依赖。

安装单个软件包

可以通过运行以下命令安装特定的软件包:

npm install 

通常会在此命令中看到更多标志:

  • --save在新版本npm中为默认配置,表示安装并添加条目到package.json文件的dependencies(依赖)。
  • --save-dev表示安装并添加条目到package.json文件的devDependencies(开发依赖)。
  • 区别主要是devDependenciesi通常是开发的工具(例如nodemon),而dependencies则是在开发环境和生产环境中都会用到的应用程序。

更新软件包 npm update

通过运行以下命令,更新也变得很容易:

npm update

npm会检查所有软件包是否有满足版本限制的更新版本。
也可以指定单个软件包进行更新:

npm update 

版本控制

除了简单的下载外,npm还可以管理版本控制,因此可以指定软件包的任何特定版本,或者要求版本高于或低于所需版本。比如在一些时候,一个库仅与另一个库的主版本兼容,或者一个库的最新版本中有一个未修复的缺陷引起了问题。指定库的显式版本还有助于使每个人都使用相同的软件包版本,以便整个团队运行相同的版本,直到package.json文件被更新。在所有这些情况中,版本控制都有很大的帮助,npm遵循语义版本控制标准。

查看npm包安装的版本

若要查看所有已安装的npm软件包(包括它们的依赖包)的最新版本,则:

npm list

也可以打开package-lock.json和package…json文件查看。

安装npm包的指定版本

可以使用@语法来安装npm软件包的指定版本:

npm install @

示例:

npm install webpack

以上命令会安装最新版本。
使用以下命令可以安装1.2.0版本:

npm install webpack@1.2.0

全局的软件包也可以这样做:

npm install -g webpack@4.16.4

可能还有需要列出软件包所有的以前的版本。可以使用npm view versions:

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 run

npm不仅可以用于模块管理,还可以用于执行脚本。package.json文件有一个scripts字段,可以用于指定脚本命令,供npm直接调用。可通过使用以下方式运行:

npm run 

npm run命令会自动在环境变量$PATH中添加node modules/.bin目录,所以scripts字段里面调用命令时不用加上路径。
npm run如果不加任何参数,直接运行,会列出package.json里面所有可以执行的脚本命令。
npm内置了两个命令简写,npm test等同于执行npm run testnpm 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安装软件包时,可以执行两种安装类型:本地安装和全局安装。

本地安装

默认情况下,当输入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

卸载npm软件包

官方文档

卸载本地安装的依赖包

若要卸载之前在本地安装(在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 the dependencies, devDependencies, optionalDependencies, and peerDependencies objects in your package.json.
Further, if you have an npm-shrinkwrap.json or package-lock.json, npm will update those files as well.
--no-save will tell npm not to remove the package from your package.json, npm-shrinkwrap.json, or package-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和package-lock.json的作用与区别

  • package.json记录当前项目所依赖模块的版本信息,更新模块时锁定模块的大版本号(版本号的第一位)。
  • package-lock.json记录了node_modules目录下所有模块的具体来源和版本号以及其他的信息。

当修改了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一起上传到代码托管平台或者发给别人,这样别人下载项目的时候去更新模块信息,就能得到一模一样的模块版本。

你可能感兴趣的:(npm)