记录学习笔记、分享资源工具、交流技术思想、提升工作效率

npm常用命令

前端 xiaomudk 3年前 (2018-08-26) 3317次浏览 0个评论
文章目录[隐藏]

npm常用命令

install 安装

安装一个node工具包。安装之前,npm会先检查node_modules目录之中是否已经存在指定模块。如果存在就不再安装,即使远程仓库已经有了一个新版本也是。如果要重新安装可以带上参数-f。如果node_modules不存在指定模块,则向registry查询模块压缩包的网址,然后下载压缩包并放至缓存目录,最后解压压缩包到当前项目的node_modules目录。

  • 别名:npm inpm add
  • 参数:[-P|--save-prod|-D|--save-dev|-O|--save-optional] [-E|--save-exact] [-B|--save-bundle] [--no-save] [--dry-run]

语法

npm install <name>|[<@scope>/]<name>|[<@scope>/]<name>@<tag>|[<@scope>/]<name>@<version>|[<@scope>/]<name>@<version range>|<git-host>:<git-user>/<repo-name>|<git repo url>|<tarball file>|<tarball url>|<folder>

参数说明

  • -P, --save-prod:安装包将出现在你的dependencies中。这是默认值,除非存在-D-O
  • -D, --save-dev:安装包将出现在你的devDependencies中。
  • -O, --save-optional:安装包将出现在你的optionalDependencies中。
  • --no-save:不保存在依赖中。
  • -f, --force强制重新安装。

如:

npm i ijijin_builder -P

并且,当使用上述任何选项将依赖包保存到package.json时,有两个可选参数:

  • -E, --save-exact:保存的依赖包将配置为精确的版本,而不是使用NPM的默认semver range运算符。
  • -B, --save-bundle:保存依赖包的同时将添加你的bundleDependencies列表。

当然,如果有npm-shrinkwrap.json 或 package-lock.json的话,也会更新它们。

<scope>是可选的,作用是将从与指定作用域关联的注册表下载包。如果没有与给定范围关联的注册表,则假定为默认注册表。

注意:如果你没有在scope名字里写入@符号,NPM将把它解释为一个Github存储库,参见下面。作用域名称后面还必须跟一个斜杠。

如:

npm install sax
   npm install githubname/reponame
   npm install @myorg/privatepackage
   npm install node-tap --save-dev
   npm install dtrace-provider --save-optional
   npm install readable-stream --save-exact
   npm install ansi-regex --save-bundle

全局模式:-g--global

生产模式:--production

如果通过--production参数或NODE_ENV环境变量设置为production时,npm将不会安装devDependencies的安装包列表。

注意:在项目中安装dependency时--production参数无效。

update 更新

缓存目录

执行npm install或npm update命令后,从registry下载的压缩包都存放在本地的缓存目录。

在Linux或Mac上,这个缓存目录默认是在用户主目录下的.npm目录;
在windows下默认是%AppData%/npm-cache目录。

通过配置命令可以查看这个目录的位置:

npm config get cache

清除缓存目录

直接删文件夹或

npm cache clean

设置缓存时间

npm提供了一个参数--cache-min,用于从缓存目录安装模块,该参数指定一个时间,单位为分钟。只有超过这个时间的模块才会从registry下载。如

npm instatll --cache-min 9999 fundcharts

run-script 运行任意包脚本

别名:npm run

语法

npm run-script <script name>

run-script将从包的“scripts”对象运行任意命令。如果没有提供“命令”,它将列出可用的脚本。run[-script]被用作test、start、restart和stop等命令,不过也可以直接调用。当包中的脚本打印出来时,它们被分为生命周期(测试、启动、重新启动)和直接运行脚本。

从npm@2.0.0开始,在执行脚本时可以使用自定义参数。getopt使用特殊选项–来分隔选项的结尾。NPM将把后面的所有参数直接传递给脚本如:

npm run test -- --grep="pattern"

参数将只传递到NPM运行后指定的脚本,而不传递到任何前脚本或后脚本。

env脚本是一个特殊的内置命令,可用于列出运行时脚本可用的环境变量。如果在包中定义了“env”命令,它将优先于内置命令。

除了shell预先存在的路径之外,npm run还将node_modules/.bin添加到提供给脚本的路径中。本地安装的依赖项提供的任何二进制文件都可以不使用node_modules/.bin前缀。例如,如果您的包中有一个devdependency on tap,那么您应该编写

"scripts": {"test": "tap test/\*.js"}

来代替

"scripts": {"test": "node_modules/.bin/tap test/\*.js"}

来运行你的test脚本。

运行脚本的实际shell依赖于平台。默认情况下,在类Unix系统上,它是/bin/sh命令,在Windows上是cmd.exe。/bin/sh引用的实际shell也取决于系统。从npm@5.1.0开始,可以使用脚本shell配置自定义shell。

脚本从模块的根目录运行,无论调用NPM RUN时当前的工作目录是什么。如果希望脚本根据所处的子目录使用不同的行为,则可以使用init_cwd环境变量,该变量保存运行npm run时所处的完整路径。

npm run将node环境变量设置为执行npm的节点可执行文件。此外,如果传递了–scripts prepend节点路径,则节点所在的目录将添加到路径中。如果传递了–scripts prepend node path=auto(这是NPM v3中的默认值),则只有在路径中找不到该节点可执行文件时才会执行此操作。

参数:

  • --silent:防止显示NPM出错时输出。
  • --if-present:来避免在未定义脚本时使用非零退出代码退出。这样可以在不破坏执行链的情况下运行可能未定义的脚本。

list 查看安装

语法

npm list

package-lock.json

package.json文件只能锁定大版本,也就是版本号的第一位,并不能锁定后面的小版。package-lock.json 是在 npm install时候生成一份文件,用以记录当前状态下实际安装的各个npm package的具体来源和版本号。

安装包前置

包下载的前置知识
一个包的版本号基本由三位数字构成 x.x.x, 它们分别是 Major(主版本号), Minor(次版本号), Patch(修订号)。

  • *: 升级 Major + Minor + Patch;
  • ^: 升级 Minor + Patch;
  • ~: 升级 Patch;
    比如 ^4.3.1 表示 4.x.x 的最新版, ~4.3.1 表示 4.3.x 的最新版

prune 清理模块

使用情景:开发工程中可能使用了某些三方模块(node_modules目录下),后来又不用了,prune则可以清除这些不再需要的文件。

语法

npm prune

prune原理是根据package.json里的依赖项来判断是否删除。

ci 用“干净”状态安装项目

npm 在v5.7.1起支持。

语法

npm ci

npm ci相比npm install下的区别:

  • 1.项目必须含一个package-lock.json或npm-shrinkwrap.json文件
  • 2.如果package-lock中的依赖于package.json中不匹配的话,执行命令会报错并退出执行
  • 3.如果node_modules已经存在,它将在执行前删除
  • 4.它永远不会改写package.json或package-lock.json

本网站采用知识共享署名-相同方式共享 4.0 国际许可协议进行授权
转载请注明原文链接:npm常用命令
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址