1.
JavaScript缺少包结构的定义,而CommonJS定义了一系列的规范。NPM的出现则是为了在CommonJS规范的基础上,实现解决包的安装卸载、依赖管理、版本管理等问题。
包结构:
package.json(可以用npm init 配置创建)
{
"name": "node2_laoma", // 名字,最好为小写。
"version": "1.0.0", // x.x.x : 第一个:主版本(大版本);第二个:次版本(代表了在主版本上增加了些功能);第三位:表示修复了些bug
"description": "learn_node", // 当前包的描述
"main": "index.js", // 当文件夹引用时,默认的搜索文件(文件夹引用见前一章)
"directories": {
"lib": "lib"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "MIT",
"dependencies": {
"string-width": "^4.2.0" // 下次使用npm install命令时,会自动来读取这些配置,^的含义是:新安装的包可以大于其版本号(此处示例为4.2.0),但主版本号不变! ~的含义是主版本和次版本都不能变,修订号(即第三位)可以变;*的含义是主版本号也可以变。(默认为^)
}
}
运用:
- 安装:npm install 包名
- options:
- --save-prod (代表把当前安装包的配置写入到当前package.json文件中,可以用-P代替。默认参数,不写也可以。)
- --save-dev (开发时依赖。同-D)
- -g (或者 --global ,将包安装在全局环境下,那么这个包在其他地方也可以使用)
- 如果只写npm install,则会自动去读package.json配置文件去下载安装对应的包。
- 安装指定的版本:npm install 包名@x.x.x;安装最新的版本 :npm install 包名@latest
- options:
- 卸载:npm uninstall 包名
- options:
- --save-prod (从配置文件里的dependencies里移除)
- options:
- 设置镜像:npm config set registry http://xxxxxxxxxx
- 查看设置:npm config list
- 查看当前项目安装的包:npm ls
- options:
- --depth=1 (设置显示深度,此处为设置深度为1)
- options:
- 发布包:略
- 执行package.json中的script:
示例:
package-lock.json文件 (npm5.6出现的):作用就是锁住版本号,防止版本号在不同地方安装不同带来麻烦。
2.yarn是npm之外的另一种选择 (推荐!谁用谁知道!)
用法和npm相似,且弥补了npm很多缺点,此外yarn非常快!
详细使用自查(略)
yarn:更方便,更快速(并行下载),更简洁,缓存机制很棒!