老師我有幾個npm觀念的問題
# 具体遇到的问题
1.為什麼要用到npm,可以不用嗎? npm和網路上載下來 library 檔案再用 script 引入,這兩個差別是什麼?
2.package.json 和 package-lock.json 有什麼差別? package-lock.json是做什麼的? 我只知道自行安裝其它模組會出現在package.json的dependence。
3.當協作的時候,package-lock.json和package.json 需不需要傳上 GitHub ?
# 报错信息的截图
# 相关课程内容截图
# 尝试过的解决思路和结果
# 粘贴全部相关代码,切记添加代码注释(请勿截图)
在这里输入代码,可通过选择【代码语言】突出显示
正在回答
同学你好,理解正确,其他问题解答如下:
1.npm升级到5版本以后,就会自动生成两个文件,我们不用关心npm的开发人员为什么将其分成了两个文件,只需要知道这两个文件大概的区别即可。
2. 安装依赖时,除了可以使用npm install XXX这种指令外,还可以直接修改package.json中的依赖包版本号,比如将"react"的版本改成"^16.13.2",然后直接执行npm install 即可(不推荐这种做法)。即,当我们手动修改package.json文件中的版本号后,就会造成package.json与package-lock.json两个文件的内容不同。
对于package.json与package-lock.json,简单了解一下就行,不用深究。
祝学习愉快!
同学你好,问题解答如下:
第二条简单可以理解成,如果手动修改了package.json文件后,执行npm install时,会按照package.json文件中的内容去下载依赖,而如果两个文件内容相同,则会按照package-lock.json中的文件去下载内容。按照package.json中的内容下载依赖后,会出现package.json中,记录了"react"的版本是"^16.13.1",但是实际下载的可能是16.13.2,即实际下载的版本,可能是升级版,但是按照package-lock.json下载依赖时,就只会下载16.13.1,该文件不允许下载升级包。之前的回复比较详细,文字较多,同学再仔细阅读一下。
祝学习愉快!
同学你好,问题解答如下:
1.下载依赖包,并引入到项目中,有两种方式,一是使用npm包管理工具,二是将包下载下来,并使用script直接引入。二者最大的区别在于,大多数框架,都没有script标签,它们不支持使用script的方式引入插件包,只支持使用npm下载,并利用require、import等关键字引入。由于利用框架开发项目,离不开npm,所以必须会使用npm下载依赖包。
2.package-lock.json是在“npm install”时生成的一份文件,它来用记录当前状态下实际安装的各个包的具体来源和版本号,而package.json中也会记录当前项目所需的依赖包及其版本号。如果我们手动改了package.json中的内容,导致package.json和package-lock.json中的内容不同,那么执行npm install时,会根据package.json中的版本号和语义去下载最新的包,并更新至lock。如果二者是同一个状态,那么执行npm install时,会根据lock去下载与项目完全一致的版本号,而不会理会该包是否有更新。比如package.json中,记录了该条信息:"react": "^16.13.1",其中^的含义是向后(新)兼容依赖,意思是,如果react的版本超过16.13.1,并且大版本号是16,那么使用npm install 安装时,就允许下载最新的包,即可能实际下载的是16.13.2。但是如果package.json和package-lock.json内容一致,则会下载16.13.1版本,保证版本库与之前安装的一样。所以开发时,尽量不要手动修改package.json中的版本号(了解即可)。
3. 多人协作时,需要将package.json和package-lock.json上传,而node_modules这个文件夹是不同上传的,因为下载项目后,我们可以根据package.json和package-lock.json重新下载依赖包。
祝学习愉快!
- 参与学习 人
- 提交作业 239 份
- 解答问题 10739 个
本阶段带你深入前端开发的肌理,通过ES6基础知识和前端主流高级框架的学习,助你快速构建企业级移动webAPP应用,进入职场的终极battle
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星