今天在学习webpack的时候用到了npm 由于学习vue的时候一直只是停留在npm install上 因而乎今天看了一些博客和官方文档 从新了解了一下npm的相关知识vue
package.json是经过npm init建立时生成的,package.json文件中会记录项目中所须要的模块。记录的只是每一个模块的基本信息。模块名称和大版本信息。node
例如axios在package.json中 webpack
在使用npm install的时候会自动生成一个package-lock.json的文件,package-lock.json文件则会记录每一个模块的详细信息,如模块的具体版本号和各个模块所依赖的子模块的信息。ios
而axios在package-lock.json中 web
npm install的过程大体就是从package.json中读取全部的依赖信息,而后再与node_modules中已经安装的依赖进行对比,若是没有则经过package-lock.json获取相应版本号下载安装.若是已经存在则会经过package-lock.json检查更新。npm
进行更新的原则就是其范围是在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之间)json
dependencies是生产环境所须要的依赖如上图vue,elementUI,axios等。axios
npm install ... --save 经过--save的方式来保存到dependencies中
复制代码
而Devdependencies是开发环境所须要的依赖如webpack,babel-loader等。Devdependencies只存在与开发阶段,也就是说项目打包事后不会用到这些依赖,babel
npm install ... --save-dev 经过--save-dev的方式来保存到Devdependencies中
复制代码
因此在浏览或者使用其余人项目的时候咱们也就能够进行选择性的安装依赖来节省时间。npm install是将package.json下面的全部依赖报所有进行安装,而npm install --production则只是安装dependencies下的依赖而不安装Devpendecies下的。学习
第一次写有点小紧张~~~本人现阶段也是在边学边练,可能技术储备还不够。若是哪里写得有问题但愿各位大佬及时指出!!!