- 是什么:
- npm 是使用别人代码与分享自己代码(代码共享)的一种开发方式,同时它可以轻松的管理同一份代码的不同版本。
- npm随node一起安装,但是我们也可以运行
npm install npm@latest -g
来更新版本
- 无权限保存npm包的处理方式
-
修改默认路径的使用权限
操作 命令 查看当前用户 whoami
查找npm默认路径 npm config get prefix
修改目录拥有者为当前用户 sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
-
修改默认路径
操作 命令 创建目录 mkdir ~/.npm-global
设置新路径 npm config set prefix '~/.npm-global'
创建环境配置文件 创建 ~/.profile
并添加内容export PATH=~/.npm-global/bin:$PATH
执行文本,更新系统变量 source ~/.profile
使用 homebrew 安装 node 可避免权限的问题
brew install node
,brew 会对相关的目录设置正确的权限。
- npm 安装
全局
与局部(默认)
依赖类型 | 命令 |
---|---|
未写入package.json ,仅下载到node_modules
|
npm install lodash |
开发时依赖devDependencies
|
npm install lodash --save-dev |
程序运行依赖dependencies
|
npm install lodash --save |
- 包版本下载规则
- 没有
package.json
: 加载当前最新版本 - 有
package.json
: 加载符合版本语义解析的最新版本
- 语义版本号解析参见semver语义版本介绍
-
package.json
文件
- 必须包含
{name: "project name",version: "project version"}
- 创建
package.json
-
npm init
询问式配置 -
npm init --yes(or -y)
直接创建默认配置 -
npm set init.author.email "author email"
预设字段信息 -
npm-init.js
预设package.json
范本
-
- npm 更新局部包
操作 | 命令 |
---|---|
列举 | npm ls |
查看是否过时 | npm outdated |
更新局部包到最新 | npm update |
- 如何更新指定包到指定版本:先移除,再安装指定包
- 移除包
操作 | 命令 | 说明 |
---|---|---|
移除 | npm uninstall lodash |
不会修改package.json
|
同步移除 | npm uninstall --save(-dev) lodash |
删除package.json 相应字段 |
清理 | npm prune |
清理node_modules ,移除package.json 中不存在的包 |
- 全局安装
- 能够在命令行访问包
- 能够在任何项目中直接
require
-
npm update -g jshint
指定全局包更新 -
npm update
所有全局包更新 -
npm outdated -g --depth=0
查看过时包 -
npm uninstall -g jshint
移除指定包(不存在npm uninstall -g
移除所有全局包的操作)
- npm 包发布
包中.gitignore
或.npmignore
以及node_modules
目录之外的文件都会被包含在发布的包中。
-
npm install . -g
安装当前包,确认是否可运行 - 发布前先查看npm上是否已经存在该名字的包:
https://npmjs.com/package/<package>
-
npm adduser
添加npmjs注册的用户 - 访问https://www.npmjs.com/email-edit:<package-name>校验邮箱
-
npm publish <dir>
发布包 -
npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease]
自增来修改版本号 -
npm publish
重新发布
- 私有模块:
@scope/package
, 发布需付费,他人无法使用 - 打标签
npm publish --tag beta
- 使用
npm install <pkg>@<tag>