NPM
1. NPM简介
1.1 创建一个package.json文件
1. 必填项name和version字段
- 该"name"字段包含您的软件包的名称,并且必须为小写和一个单词,并且可以包含连字符和下划线。
- 该
"version"
字段的格式必须x.x.x
符合语义版本控制准则。
2. 依赖
- "dependencies":您的应用程序在生产中所需的软件包。
- "devDependencies":仅本地开发和测试所需的软件包。
- "peerDependencies":不太常见。
peerDependencies的目的是提示宿主环境去安装满足插件peerDependencies所指定依赖的包,然后在插件import或者require所依赖的包的时候,永远都是引用宿主环境统一安装的npm包,最终解决插件与所依赖包不一致的问题。
1.2 关于语义版本的控制
为了帮助依赖于您的代码的开发人员,我们建议从以下位置开始您的软件包版本1.0.0并按如下所示递增。
代码状态 | 阶段 | 规则 | 示例版本 |
---|---|---|---|
初版 | 新产品 | 从1.0.0开始 | 1.0.0 |
向后兼容的错误修复 | 补丁发布 | 递增第三位数 | 1.0.1 |
向后兼容的新功能 | 轻微释放 | 递增中间数字并将最后一位重置为零 | 1.1.0 |
更改会破坏向后兼容性 | 主要发行 | 递增第一位并将中间和最后一位重置为零 | 2.0.0 |
2. NPM 常用命令
除了本章介绍的部分外,NPM还提供了很多功能,package.json里也有很多其它有用的字段。
除了可以在npmjs.org/doc/查看官方文档外,这里再介绍一些NPM常用命令。
npm 命令 | 作用 | 例子 | 备注 |
---|---|---|---|
npm help | 可查看所有命令 | ||
npm help <command> | 可查看某条命令的详细帮助 | npm help install | |
npm install | |||
npm publish | |||
npm update <package> | 可以把当前目录下node_modules子目录里边的对应模块更新至最新版本 | ||
npm update <package> -g | 可以把全局安装的对应命令行程序更新至最新版。 | ||
npm cache clear | 清空NPM本地缓存 | ||
npm unpublish <package>@<version> | 可以撤销发布自己发布过的某个版本代码 | ||
npm view xxx versions | Npm查看某个包的版本信息 | npm view express versions | |
tree -d node_modules/ | 查看包依赖关系 | ||
npm ls | 可以看到模块间彼此依赖关系 |
- 在package.json所在目录下使用npm install . -g可先在本地安装当前命令行程序,可用于发布前的本地测试。
- npm 2 和npm 3包管理方式的变化。
npm2所有项目依赖是嵌套关系,而npm3为了改进嵌套过多、套路过深的情况,会将所有依赖放在第二层依赖中(所有依赖只嵌套一次,彼此平行,也就是平铺的结构)
下面我来搬个砖,简单翻译一下:
举个例子:
有一个模块A,其依赖于B:
现在有一个app应用依赖于A,执行:
npm install
,会自动安装所有依赖。npm3 会将模块A 和模块B 安装到同一 node_modules 目录下,二者是同级的;
而npm2 依然会在node_modules 中安装A,但是会将B 安装到 A里面的node_modules, 也就是 A 和 B 是嵌套关系:
image.png
现在假如 app 需要另一个模块C,并且 C 是依赖于另一个版本的B:
那么问题来了,在npm2中,由于是层层嵌套的结构,所以继续嵌套即可,但是npm3如何处理呢?已经有一个 B v1.0版本了,又不能相同目录下再来一个 B v2.0 ,那么变通一下,将 B v2.0 嵌套在 C 中即可:
image.png
在终端中,文件树长得像下面这样:
image.png
由于npm3 的改变,怕分不清彼此依赖了吗?
没关系,执行
npm ls
依然可以看到模块间彼此依赖关系:image.png
如果你想查看最浅层的依赖关系,只需要:
npm ls --depth=0
image.png
3. NPM 常用场景的组合命令
3.1 npm更新package.json中依赖包的版本到最新
-
安装:
npm install npm-check-updates -g
、npm install npm-check -g
-
检查: depedencies 中的最新版本
npm-check-updates
或者ncu
-
更新:更新 dependencies 到最新版本
ncu -u
&&npm install
可以将node_modules
先删除了再继续
- 使用npm cache clear可以清空NPM本地缓存,用于对付使用相同版本号发布新版本代码的人。
网友评论