npm install 生成的angular项目中package-lock.json是什么?有什么用处?有什么坑?

这个package-lock.json 是在 `npm install`时候生成一份文件,用以记录当前状态下实际安装的各个npm package的具体来源和版本号。

它有什么用呢?因为npm是一个用于管理package之间依赖关系的管理器,它允许开发者在pacakge.json中间标出自己项目对npm各库包的依赖。你可以选择以如下方式来标明自己所需要库包的版本

这里举个例子:

"dependencies": {
 "@types/node": "^8.0.33",
},

这里面的 向上标号^是定义了向后(新)兼容依赖,指如果 types/node的版本是超过8.0.33,并在大版本号(8)上相同,就允许下载最新版本的 types/node库包,例如实际上可能运行npm install时候下载的具体版本是8.0.35


以后直接改 package.json 文件相应模块的版本号,再执行npm install不会更新了(好可怕),你只能手动用npm install xxx@yy指定版本号来安装,然后它会自动更新 package-lock.json 文件。直接执行npm install时,如果不存在 package-lock.json 文件,它会根据安装模块后的 node_modules 目录结构来创建;如果已经存在 package-lock.json 文件,则它只会根据 package-lock.json 文件指定的结构来下载模块,并不会理会 package.json 文件。


问题:

遇到一个问题,引用stylus失败,已解决,但是有点困惑

背景如下:
npm目前升级到了5.0.3
npm install的时候目录会多一个package-lock.json这个文件
此时我在package.json的devDependencies中添加了

"stylus": "^0.54.5","stylus-loader": "^3.0.1"

然后在终端重新运行npm install的时候,项目中的node_modules并没有出现stylus文件夹
查了下资料说是新版本的坑
给的解决办法是切换回之前的npm版本……

我的解决过程
1、删除package-lock.json,重新npm install,node_modules中出现了stylus文件夹了,然而还是报错
2、在终端直接运行 sudo npm install stylus-loader stylus --save-dev 结果就编译成功了

转载请说明出处:原文链接 http://www.nbsite.cn/qdjs/30

相关阅读:

Visual Studio Code(VSCODE)语言设置简体中文

记录下angular-cli安装及重新安装过程中遇到的错误及解决方案

Angular错误:Unexpected end of Input at 1:2308

angular模板组件Component的创建及使用例子

angular新建项目、启动本地服务器、创建组件及服务等实用语句整理