npm-install
安装一个npm包
概要
npm install (with no args, in package dir)
npm install [<@scope>/]<name>
npm install [<@scope>/]<name>@<tag>
npm install [<@scope>/]<name>@<version>
npm install [<@scope>/]<name>@<version range>
npm install <git-host>:<git-user>/<repo-name>
npm install <git repo url>
npm install <tarball file>
npm install <tarball url>
npm install <folder>
alias: npm i
common options: [-P|--save-prod|-D|--save-dev|-O|--save-optional] [-E|--save-exact] [-B|--save-bundle] [--no-save] [--dry-run]
描述
这个命令用于安装项目的所有依赖,或者安装指定包及包的依赖。并且会安装package-lock或者shrinkwrap文件。请看 package-lock.json 和 npm-shrinkwrap。
完整的包是:
- a)有着package.json文件的文件夹
- b)把上 (a) 压缩的压缩文件形式
- c)把 (b) 上传,生成一个线上地址
- d)将 (c) 以< name >@< version >的方式会发布于注册表机构
- e)可对 (d) 设置< name >@< tag >
- f) (e) 中应满足命名一个"latest"的标签
- g)若包源码托管于远程仓库,则还会有< git remote url > 指向 (a)
npm install (在包目录中,没带参数):
在本地node_modules文件夹中安装依赖项。
若加了-g或者--globe参数,则会安装到全局的包文件夹中。
默认情况下,npm install 会安装在package.json下有依赖项关系的所有模块。
若给了 --production 标志,或者当NODE_ENV环境变量设置为production,npm将不会安装在devDependencies列出的模块。
npm install < folder >
将指定folder中的包作为符号链接安装到当前目录中。包的依赖关系将在链接之前被安装。
在本地e盘的npmpkg目录中有一个包testforpkg,想把它安装当前所在目录中。
> npm install e:/npmpkg/testforpkg
npm install < tarball file >
安装压缩文件包。文件名必须使用.tar,.tar.gz或.tgz作为扩展名。
> npm install ./package.tgz
npm install < tarball url >
获取tarball网址,然后安装它。为了区分这个和其他选项,参数必须以“http://”或“https://”开始
> npm install https://github.com/indexzero/forever/tarball/v0.5.6
npm install [< @scope>/]< name>
安装某打标签的包还可以写成 name@tag,若直接安装name,其实是默认安装的是“latest“标签的包,即name@latest。
> npm install sax
# 等同于
> npm install sax@latest
npm install在默认情况下将指定的包保存到dependencies。另外,您可以使用一些附加标志控制他们在哪里以及如何保存:
-P, --save-prod:包会出现在你的dependencies。这是默认的,除非-D或-O存在。
-D, --save-dev:包会出现在你的devDependencies。
-O, --save-optional:包会出现在你的optionalDependencies。
--no-save:防止保存到dependencies。
-E, --save-exact:保存的依赖关系将使用精确的版本进行配置,而不是使用npm的默认的semver范围运算符。
-B, --save-bundle:保存的依赖关系也将被添加到您的bundleDependencies列表中。
此外,如果你有一个npm-shrinkwrap.json或package-lock.json那么它也会被更新。
< scope>是可选的。将包从与指定scope的注册表中下载。如果没有注册表给定scope,则使用默认注册表。
注意:如果你的作用域名称没有包含@,那么npm会将其解释为GitHub存储库,如下所示。
# 下载地址:https://github.com/githubname/reponame
> npm install githubname/reponame
注意:如果< name>在当前工作目录中有一个文件或文件夹,那么它将尝试安装该文件或文件夹,如果该文件或文件夹无效,则只尝试通过名称获取该包。
npm install [< @scope>/]< name>@< tag>:
安装指定标签引用的包的版本。
> npm install sax@latest
> npm install @myorg/mypackage@latest
npm install [< @scope>/]< name>@< version>:
安装指定版本的包。
> npm install [email protected]
> npm install @myorg/[email protected]
npm install [< @scope>/]< name>@< version range>
安装与指定版本范围匹配的软件包版本。请注意,大多数版本范围必须放在引号中,以便您的shell将其视为单个参数。
> npm install sax@">=0.1.0 <0.2.0"
> npm install @myorg/privatepackage@">=0.1.0 <0.2.0"
npm install < git remote url>
从托管的git安装包。
<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish> | #semver:<semver>]
< protocol>是以下之一git,git+ssh,git+http,git+https,或 git+file。
#< commit-ish> 表示包某次提交的哈希值。若指定,则clone包的某次提交。
#semver : < semver> 表示commit-ish具有的格式。< semver>可以是任何有效的范围或精确version。
若#< commit-ish>和< semver>都没有指定,则使用包的master分支。
若安装的包中包含一个prepare脚本,那么它会在打包安装完成之前运行。
npm install < githubname>/< githubrepo>[#< commit-ish>]
> npm install mygithubuser/myproject
npm install github:< githubname>/< githubrepo>[#< commit-ish>]
通过git,url地址 https://github.com/githubname/githubrepo 来安装包。
若commit-ish具有semver格式,还可指定semver。没指定commit或semver,则使用master。
> npm install github:mygithubuser/myproject
npm install gitlab:< gitlabname>/< gitlabrepo>[#< commit-ish>]:
通过git,url地址 https://gitlab.com/gitlabname/gitlabrepo 来安装包。
若commit-ish具有semver格式,还可指定semver。没指定commit或semver,则使用master。
> npm install gitlab:mygitlabuser/myproject
> npm install gitlab:myusr/myproj#semver:^5.0
其他参数
- -f 或 --force参数将强制NPM获取远程资源,即便本地副本已存在。
> npm install sax --force
--ignore-scripts参数将导致npm不执行package.json中定义的任何脚本。
--link在某些情况下,参数将导致npm先全局安装,再链接到本地空间。
这个--no-bin-links参数将阻止创建符号链接的包。
该--no-optional参数将阻止安装optional的依赖项。
的--no-shrinkwrap说法,这将忽略 package lock 或 shrinkwrap 文件,并使用package.json来代替。
这个--no-package-lock参数会阻止npm创建一个 package-lock.json文件。
该--nodedir=/path/to/node/source参数将允许npm找到节点源代码,以便npm可以编译本地模块。
这个--only={prod[uction]|dev[elopment]}参数将会导致只有 devDependencies或者只有非devDependencies被安装,而不管NODE_ENV。