描述

npm install 是用来安装包和相关的依赖包的,如果存在package-lock文件,或是 shrinkwrap文件,yarn.lock文件,依赖包的安装将被其锁定,如果存在多个,则优先级如下:

  • npm-shrinkwrap.json
  • package-lock.json
  • yarn.lock

命令

npm install [<@scope>/]<pkg>
npm install [<@scope>/]<pkg>@<tag>
npm install [<@scope>/]<pkg>@<version>
npm install [<@scope>/]<pkg>@<version range>
npm install <alias>@npm:<name>
npm install <folder>
npm install <tarball file>
npm install <tarball url>
npm install <git:// url>
npm install <github username>/<github project>
aliases: add, i, in, ins, inst, insta, instal, isnt, isnta, isntal, isntall

可以看到 npm Install 也可以使用 npm add 命令别名。 

命令示例 

# 默认安装最新
npm install hrefjs-lite

# 根据tag名称安装
npm i hrefjs-lite@tagname

# 指定版本安装
npm i hrefjs-lite@1.0.8
# 安装最新版本
npm i hrefjs-lite@latest

# 根据版本范围安装对应的版本
npm i hrefjs-lite@"<1.0.8"

# 安装指定版本指定别名
npm i hrefjs-lite2@npm:hrefjs-lite@1.0.7

# 文件夹安装
npm i ./hrefjs-lite

# 指定tar压缩文件进行安装
npm i hrefjs-lite.tar

小技巧

我们知道,不同的包之间有可能存在不兼容的问题,也就是说最新版本的包对于其他包项目来说是不兼容的,这个时候可以根据提示,安装对应版本范围内的开发包。

npm install hrefjs-lite@"<1.0.8"

重点说一下使用别名安装npm对应的包,当在开发中,最新的包与旧版本的包可能存在不兼容,可以安装最新版本的包别名,来使用最新的包,还可以兼容旧版本。

npm install hrefjs-lite-other@npm:hrefjs-lite@1.0.7
npm install my-react@npm:react
npm install jquery2@npm:jquery@2
npm install jquery3@npm:jquery@3
npm install npa@npm:npm-package-arg

常用参数

  • -P, --save-prod           dependencies 依赖项安装,不指定-D或-O时,默认使用此项
  • -D, --save-dev            devDependencies 开发依赖项安装
  • -O, --save-optional     optionalDependencies 可选依赖项安装
  • -g, --global                 全局安装
  • -B, --save-bundle       bundleDependencies 依赖项安装
  • -E, --save-exact         明确版本号安装,不使用^符号进行默认安装。
  • -w, --workspace          install 命令也是支持多工作区安装的
  • -ws, --workspaces      设置为false时,禁用workspaces

关于workspaces

在开发中或多或少会对lerna有所了解,lerna是一个用来管理多个软件开发包的工具,那么npm如果需要管理多个软件包,可以在package.json文件中配置 workspaces ,这样就可以对多个软件包进行管理,npm的很多命令都是支持 workspace 的,比如 npm install 命令。

可以使用 npm init -w packages/a  来初始化 workspaces 多包管理。

{
  "name": "my-workspaces-powered-project",
  "workspaces": [
    "packages/a"
  ]
}

不管是安装、升级,或是删除命令,都可以针对具体或所有的软件包进行操作。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐