Skip to content

Latest commit

 

History

History
343 lines (228 loc) · 8.58 KB

npm.md

File metadata and controls

343 lines (228 loc) · 8.58 KB

npm 命令

更新与查看版本信息

npm install npm@latest -g

# 查看 npm 命令列表
$ npm help

# 查看各个命令的简单用法
$ npm -l

# 查看 npm 的版本
$ npm -v

# 查看 npm 的配置
$ npm config list -l

# 查看全局安装路径
$ npm prefix -g

# 查看全局安装过的模块
npm list -g
npm list -g --depth 0
# 如果不添加--depth 0 会将更详细的列表展示出来。

npm init

npm init 用来初始化生成一个新的 package.json 文件。它会向用户提问一系列问题,如果你觉得不用修改默认配置,一路回车就可以了。

如果使用了 -f(代表 force)、-y(代表 yes),则跳过提问阶段,直接生成一个新的 package.json 文件。

npm init

# 则跳过提问阶段
npm init -f -y

设置环境变量

npm set 用来设置环境变量。

npm set init-author-name 'Your name'
npm set init-author-email 'Your email'
npm set init-author-url 'http://yourdomain.com'
npm set init-license 'MIT'

上面命令等于为 npm init 设置了默认值,以后执行 npm init 的时候,package.json 的作者姓名、邮件、主页、许可证字段就会自动写入预设的值。这些信息会存放在用户主目录的 ~/.npmrc 文件,使得用户不用每个项目都输入。如果某个项目有不同的设置,可以针对该项目运行 npm config

临时修改配置文件

npm publish --registry xxx --user-agent xxx

npm info

npm info 命令可以查看每个模块的具体信息。比如,查看 react 模块的信息。

npm info react

npm ls

npm ls 命令可以查看本地包的版本。

npm ls jquery

npm search

npm search 命令用于搜索 npm 仓库,它后面可以跟字符串,也可以跟正则表达式。

$ npm search <搜索词>

#下面是一个例子。
$ npm search node-gyp
// NAME                  DESCRIPTION
// autogypi              Autogypi handles dependencies for node-gyp projects.
// grunt-node-gyp        Run node-gyp commands from Grunt.
// gyp-io                Temporary solution to let node-gyp run `rebuild` under…
// ...

npm list

npm list 命令以树型结构列出当前项目安装的所有模块,以及它们依赖的模块。

$ npm list

# 加上 global 参数,会列出全局安装的模块。
$ npm list -global

# npm list 命令也可以列出单个模块。
$ npm list underscore

npm install

每个模块可以“全局安装”,也可以“本地安装”。“全局安装”指的是将一个模块安装到系统目录中,各个项目都可以调用。一般来说,全局安装只适用于工具模块,比如 eslintgulp。“本地安装”指的是将一个模块下载到当前项目的 node_modules 子目录,然后只有在项目目录之中,才能调用这个模块。

# 本地安装
$ npm install <package name>

# 全局安装
$ sudo npm install -global <package name>
$ sudo npm install -g <package name>

# npm install也支持直接输入Github代码库地址。
$ npm install git://github.com/package/path.git
$ npm install git://github.com/package/path.git#0.1.0

安装之前,npm install 会先检查,node_modules 目录之中是否已经存在指定模块。如果存在,就不再重新安装了,即使远程仓库已经有了一个新版本,也是如此。

如果你希望,一个模块不管是否安装过,npm 都要强制重新安装,可以使用-f 或--force 参数。

$ npm install <packageName> --force

npm update,npm uninstall

npm update 命令可以更新本地安装的模块。

# 升级当前项目的指定模块
$ npm update [package name]

# 升级全局安装的模块
$ npm update -global [package name]

它会先到远程仓库查询最新版本,然后查询本地版本。如果本地版本不存在,或者远程版本较新,就会安装。

使用 -S--save 参数,可以在安装的时候更新 package.json 里面模块的版本号。

npm uninstall 命令,卸载已安装的模块。

$ npm uninstall [package name]

# 卸载全局模块
$ npm uninstall [package name] -global

npm run

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

{
  "scripts": {
    "lint": "jshint **.js",
    "test": "mocha test/"
  }
}

上面代码中,scripts 字段指定了两项命令 lint 和 test。命令行输入 npm run-script lint 或者 npm run lint,就会执行 jshint **.jsnpm runnpm run-script 的缩写。

npm 内置了两个命令简写,npm test 等同于执行 npm run testnpm start 等同于执行 npm run start

npm run 会创建一个 Shell,执行指定的命令,并临时将 node_modules/.bin 加入 PATH 变量,这意味着本地模块可以直接运行。

如果希望一个操作的输出,是另一个操作的输入,可以借用 Linux 系统的管道命令,将两个操作连在一起。

"build-js": "browserify browser/main.js | uglifyjs -mc > static/bundle.js"

但是,更方便的写法是引用其他 npm run 命令。

"build": "npm run build-js && npm run build-css"

写在 scripts 属性中的命令,也可以在 node_modules/.bin 目录中直接写成 bash 脚本。下面是一个 bash 脚本。

"build-js": "bin/build.sh"

start

如果 start 脚本没有配置,npm start 命令默认执行下面的脚本,前提是模块的根目录存在一个 server.js 文件。

$ node server.js

pre- 和 post- 脚本

内部变量

npm link

注册和登录

# 注册一个用户
npm adduser

# 登录 npm
npm login

# 验证登录是否成功
npm who am i

发布 npm 包

npm publish

版本更新

# 生成一个新的版本号
npm version <update_type> -m "<message>"

# 提交更新的版本
npm publish

其中 update_type 有三种:

参数 描述
patch 增加一位补丁号(比如 1.1.1 -> 1.1.2)
minor 增加一位小版本号(比如 1.1.1 -> 1.2.0)
major 增加一位大版本号(比如 1.1.1 -> 2.0.0)

舍弃某个版本的模块

npm deprecate my-thing@"< 1.0.2" "critical bug fixed in v1.0.2"

撤销自己发布的版本

npm --force unpublish [package name]

npm 依赖包版本

版本的格式

major.minor.patch

主版本号.次版本号.修补版本号

  • patch:修复 bug,兼容老版本

  • minor:新增功能,兼容老版本

  • major:新的架构调整,不兼容老版本

版本 描述
version 必须匹配某个版本
>version 必须大于某个版本
>=version 可大于或等于某个版本
<version 必须小于某个版本
<=version 可以小于或等于某个版本
~version 大概匹配某个版本
^version 兼容某个版本,^1.1.2 表示>=1.1.2 <2.0.0
x-range x 的位置表示任意版本 1.2.x
*-range 任意版本,""也表示任意版本
version1 - version2 大于等于 version1,小于等于 version2
range1 || range2 满足 range1 或者满足 range2,可以多个范围

package.json

允许您覆盖特定嵌套依赖项的版本

"resolutions": {
  "graceful-fs": "4.2.4"
},

使用 n 管理 node

  1. 查看可用 node 列表
n ls
  1. 安装指定版本的 node

查看官方所有的 node 版本:

npm view node versions

以安装 14.15.3 版本的 node 为例,命令行执行:

sudo n 14.15.3
  1. 切换 node 版本

现在,我的 node 版本是 14.15.3 的,我想使用 10.13.0 的版本。

命令行执行:

sudo n

通过上下键,选择要使用的 node 版本,回车键安装,d 删除,q 退出,回车安装

  1. 删除指定版本 node

命令行运行:

sudo n rm 10.13.0

参考

npm 模块管理器