npm包管理器学习笔记

npm是js界的包管理器,这里记录一下它基本的使用方法。

安装npm

  1. https://nodejs.org/ 下载安装nodejs
    node -v查看安装版本

  2. node自带npm, npm -v查看npm版本

  3. 更新到最新版本
    npm install npm -g

  4. 如果遇到permission错误到这里看看
    https://docs.npmjs.com/getting-started/fixing-npm-permissions


安装包

分为本地安装和全局安装,本地安装后你可以在的程序中用require('package')访问,全局安装通常是用于命令行工具,例如构建工具grunt CLI.

本地安装

npm install <package_name>
如果有package.json指明依赖,则不需要输入package_name直接npm install 即可全部安装完成。
运行后会当前目录生成一个node_modules目录,package会安装在里边
如果当前目录有一个package.json 则会安装里边指定的版本,否则安装最新版.
安装完成即可在代码中使用了
require('lodash'); //如果没有安装loadash则会报错

全局安装

npm install -g <package_name>

全局包安装路径:

npm root -g 显示全局包安装路径

在我的电脑上显示 C:\Users\Administrator\AppData\Roaming\npm\node_modules


package.json

package.json最低要求需要name与version

{
  "name": "my-awesome-package",
  "version": "1.0.0"
}

自动创建package.json

npm init

然后一路填表就可以了,author部分可以填多一些

Your Name <email@example.com> (http://example.com)

指明包依赖列表

  • "dependencies": these packages are required by your application in production
  • "devDependencies": these packages are only needed for development and testing

安装package时自动加入依赖列表

npm install <package_name> --save 加入到dependencies
npm install <package_name> --save-dev 加入到devDependencies


更新包

本地包更新

npm ls 查看已经安装的package
npm outdated 查看是否有新版本 ,分为 current wanted latest
npm update 更新到wanted版本,加--save,保存到package.json

如需更新到latest,建议安装 npm-check-updates 插件

全局包更新

npm ls -g --depth=0 查看都安装了哪些全局包
npm outdated -g --depth=0 查看哪个包需要更新
npm install -g <package_name> 更新
npm update -g 更新所有的全局包


删除包

本地删除

npm uninstall <package_name>

删除包,但不会清理package.json中的依赖项,下次npm ls时会报错缺少包

npm uninstall --save <package_name> 这样连依赖一起删掉

如果只删除了依赖,没有删除包,下次npm ls时会报多了包

这时应该用npm prune把包也删除掉

全局删除

npm uninstall -g <package_name>


发布包

创建用户

npm adduser

填入用户名密码邮箱, https://www.npmjs.com/~用户名查看是否创建成功

发布

确保package.json填写正确

npm publish

如果报错考虑是否package.json中的name有重复了,修改后再次发布试试.


更新发布的包

修改后再次npm publish 后会报错,是因为没有修改version.
手动修改package.json或者用下边三条命令来修改版本后,再publish

npm version patch //末位
npm version minor //中间
npm version major //首位

关于版本号

对于 发布者 来说当项目准备公开时,版本号应该为1.0.0

  • Patch release: Bug fixes 或其他 minor changes: , 增加最后一位版本号, e.g. 1.0.1 对应命令npm version patch
  • Minor release: New features 不会破坏现有的 features, 增加中间位, e.g. 1.1.0 对应命令npm version minor
  • Major release: 不能向后兼容,增加首位, e.g. 2.0.0对应命令 npm version major

对于 使用者 来说,可以安装指定的版本

npm install package_name@1.x

版本更多内容:
https://docs.npmjs.com/misc/semver


更新package.json

开发过程中更新包后,需要更新package.json里依赖的版本号到最新。

最简单的办法是使用 npm-check-updates

安装:

npm install -g npm-check-updates

显示当前项目所有依赖:

$ ncu

 express           4.12.x  →   4.13.x
 multer            ^0.1.8  →   ^1.0.1
 react-bootstrap  ^0.22.6  →  ^0.24.0
 react-a11y        ^0.1.1  →   ^0.2.6
 webpack          ~1.9.10  →  ~1.10.5

Run with -u to upgrade your package.json

更新:

$ ncu -u

 express           4.12.x  →   4.13.x

package.json upgraded

更新完毕。


cnpm 镜像加速

安装太慢可以使用淘宝镜像

http://npm.taobao.org/

安装 cnpm

npm install -g cnpm --registry=https://registry.npm.taobao.org

安装后就可以用cnpm代替npm


还有暂时用不到的有待研究:

私有包
https://docs.npmjs.com/getting-started/scoped-packages
tag
https://docs.npmjs.com/getting-started/using-tags

更新:与 yarn 命令对比

来自: https://yarnpkg.com/en/docs/migrating-from-npm#toc-cli-commands-comparison

npm (v5) Yarn
npm install yarn add
(N/A) yarn add --flat
(N/A) yarn add --har
npm install --no-package-lock yarn add --no-lockfile
(N/A) yarn add --pure-lockfile
npm install [package] --save yarn add [package]
npm install [package] --save-dev yarn add [package] --dev
(N/A) yarn add [package] --peer
npm install [package] --save-optional yarn add [package] --optional
npm install [package] --save-exact yarn add [package] --exact
(N/A) yarn add [package] --tilde
npm install [package] --global yarn global add [package]
npm update --global yarn global upgrade
npm rebuild yarn add --force
npm uninstall [package] yarn remove [package]
npm cache clean yarn cache clean [package]
rm -rf node_modules && npm install yarn upgrade
npm version major yarn version --major
npm version minor yarn version --minor
npm version patch yarn version --patch
本文采用 署名-禁止演绎 4.0 国际许可协议 (CC BY-ND 4.0) 进行许可(保留链接可任意转载,禁止修改)。
Node JavaScript

留言系统需要代理访问