今天在学习webpack的时候用到了npm 因为学习vue的时候一直只是停留在npm install上 于是乎今天看了一些博客和官方文档 重新了解了一下npm的相关知识
package.json
package.json是通过npm init创建时生成的,package.json文件中会记录项目中所需要的模块。记录的只是每个模块的基本信息。模块名称和大版本信息。
例如axios在package.json中

package-lock.json
在使用npm install的时候会自动生成一个package-lock.json的文件,package-lock.json文件则会记录每个模块的详细信息,如模块的具体版本号和各个模块所依赖的子模块的信息。
而axios在package-lock.json中

npm install的过程大致就是从package.json中读取所有的依赖信息,然后再与node_modules中已经安装的依赖进行对比,如果没有则通过package-lock.json获取相应版本号下载安装.如果已经存在则会通过package-lock.json检查更新。
进行更新的原则就是其范围是在package.json中对应安装包版本所容纳的版本。^就是指兼容该版本以后的小版本而不更新大版本,如上图package.json所示,"vue":"^2.5.2"也就是指范围应该在>=2.5.2和<3.0.0之间(tips:网上大多数帖子说的比较笼统,而参考其中的一篇帖子大致就是,^会忽视版本号开头为0的数字,也就是说"axios":"0.19.0"的范围应该在>=0.19.0和<0.20.0之间)
关于package.json中dependencies和Devdependencies的区别
dependencies是生产环境所需要的依赖如上图vue,elementUI,axios等。
npm install ... --save 通过--save的方式来保存到dependencies中
而Devdependencies是开发环境所需要的依赖如webpack,babel-loader等。Devdependencies只存在与开发阶段,也就是说项目打包过后不会用到这些依赖,
npm install ... --save-dev 通过--save-dev的方式来保存到Devdependencies中
所以在浏览或者使用其他人项目的时候我们也就可以进行选择性的安装依赖来节省时间。npm install是将package.json下面的所有依赖报全部进行安装,而npm install --production则只是安装dependencies下的依赖而不安装Devpendecies下的。
第一次写有点小紧张~~~本人现阶段也是在边学边练,可能技术储备还不够。如果哪里写得有问题希望各位大佬及时指出!!!