对于每个项目,我们使用npm来管理包。
每个项目都有对应的配置文件,配置文件会记录项目名称,版本号,项目描述,也会记录项目所依赖的其他库的信息和依赖库的版本号,这个配置文件就是package.json
如何生成配置文件:
一是手动创建项目:npm init -y (-y表示所有东西都是yes)
二是通过脚手架创建项目,脚手架会帮助我们生成package.json,并且里面有相关配置
{
"name": "packagedemo",
"version": "1.0.0",
"description": "",
"main": "src/main.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
常见属性:
每个版本前面的~和^又代表什么呢?
npm包遵循semver版本规范XYZ
X主版本:做了不兼容API的修改(可能不兼容之前的版本)类似vue2 升级vue3
Y次版本:向下兼容的功能性新增(新功能增加,但兼容之前的版本)
Z修订号:做了向下兼容的问题修正(没新功能修复了之前的bug)
~XYZ:XY保持不变,Z永远安装最新的
^XYZ:X保持不变,YZ永远安装最新的
局部安装(npm install ** )和全局安装:(npm install ** -g )
开发和生产依赖的都局部安装像axios,vue (每个项目依赖的版本不一样)
当作工具来使用的,代码里不会体现的全局安装,像webpack
npm5支持缓存策略(来自yarn的压力)
npm 一些其他命令:
yarn:早期npm下载速度慢,依赖关系混乱,Facebook推出了yarn代替yarn
cnpm工具:因为npm安装插件是从国外服务器下载,受网络影响大,可能出现异常,如果npm的服务器在中国就好了,所以我们乐于分享的淘宝团队干了这事。来自官网:“这是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。”
npx:调用项目中某个模块的指令