原文:10 things you should know about NPM - JavaScript in Plain English - Medium
翻译:码中人
0 NPM归哪家公司
鉴于最近才发生的事情,第0点是码中人自行补充的。
知名包管理工具npm,现在被GitHub收购了,鉴于GitHub现在是微软的,所以npm成了微软的“孙公司”。
1 什么是NPM
- NPM是 Node Package Manager 的简写,大部分的JavaScript程序都是以包的形式注册到npm中。
- npm 已注册超过700K包;全球最大的IT生态系统
- Yarn 是npm的替代品;由Facebook创建
2 package.json
- 同一个包根据版本的不同,可以有不同的功能;package.json文件记录了所有已安装的包的功能。
- 以下命令可创建 package.json 文件:
npm init
package.json 示例:
{
“name”: “mzhren_projects”,
“version”: “1.0.0”,
“description”: “”,
“main”: “index.js”,
“scripts”: {
“test”: “echo \“Error: no test specified\” && exit 1”
},
“author”: “”,
“license”: “ISC”
}
3 License 许可
- ISC, MIT, BSD许可证:当你承认模块和保留原始许可证声明,可以免费使用。
- Apache:可自由使用但有专利权限制。
- GPL:在部署时需要公开源代码,并且以GPL许可分发。
4 scripts
package.json中的脚本
scripts 属性指定npm 在控制台中运行的脚本命令。
通常情况下,有这几个命令:
“start”: “react-scripts start”,
“build”: “react-scripts build”,
“test”: “react-scripts test”,
“eject”: “react-scripts eject”
Vue 跟 React项目通过都是yarn start 或 npm start来启动的。
5 -- save
选项
- 在版本5之前,默认情况下,NPM只是在node_modules下安装了一个包。当您试图为您的应用程序/模块安装依赖项时,您需要首先安装它们,然后将它们(连同适当的版本号)添加到您的package.json的dependencies部分。
- 从NPM 5.0.0开始,安装的模块默认作为依赖项添加,因此不再需要–save选项。
6 — save-dev
选项
- 在 devDependencies 中添加包。也就是说,nodemon在源代码被修改时提供了热加载,通常只用于开发环境。
- Nodemon是一个实用程序,它将监视源中的任何更改并自动重新启动服务器。因为当你修改源文件后,如果你用的是原来的node 则必须手动重启 你的更改才会有效。但是如果用的是nodemon,则你不需要手动操作,它会检测你的代码改动自动重启。
- -- save-dev 可以缩写成 -D
7 package 版本
node 包的版本始终是以3个数字规则:
1.0.7
第一个数字 1
- 大版本
- 第一个数字为0一般是指开发版本,正式版本从1开始
- 主要版本增加只有当较低的版本不能兼容。,从1.5.0升级到2.0.0意味着很可能导致错误。
第二个数字0
- 小版本
- 小版本一般是兼容的,从1.5.0升级到1.6.0,一般不会产生兼容性问题
第三个数字 7
- 补丁版本
- 主要用于修复一些小bug
8 ^,<,~符号
^ 插入符号:
- 安装/更新至小版本
- 版本号中最左边的非0数字的右侧可以任意
- 例如:npm express@ ^ 1.1.1,安装版本1.1.1 ~ 2.0.0(不含2.0.0)都可以,大于等于1.1.1,但大版本不能超过1。
- 如:^0.2.3 ,表示>=0.2.3 <0.3.0,可以是0.2.3,0.2.4,…..,0.2.n
~波浪符号
- 安装/更新到补丁版本,不会超过小版本
- 如:npm i express@~1.1.1 可以安装 1.1.1 ~ 1.2.0 到的版本。
- ^常常比~有用,因为…
@latest
- 表示可以安装最新版本
9 npm outdated 命令
- 可以找到可用的更新包
- 当Current 和 Wanted不一样时,可以更新
- 更新命令为:npm update [package name]
- 报告 npm update 要吧更新所有需要更新的包