老師我有幾個npm觀念的問題

老師我有幾個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 ?

​# 报错信息的截图

# 相关课程内容截图

# 尝试过的解决思路和结果

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

在这里输入代码,可通过选择【代码语言】突出显示

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,理解正确,其他问题解答如下:

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,简单了解一下就行,不用深究。
祝学习愉快!

好帮手慕久久 2020-11-01 17:53:17

同学你好,问题解答如下:

第二条简单可以理解成,如果手动修改了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,该文件不允许下载升级包。之前的回复比较详细,文字较多,同学再仔细阅读一下。

祝学习愉快!

  • 提问者 weixin_慕雪0272820 #1
    老師看看我的理解是否正確? 二個文件相同--依照package.json下載, 不相同--依照package-lock.json下載,只會下載舊版本,該文件不允許下載升級包。 那為什麼要分成二個檔案呢? 實際上什麼情況二個文件會不相同? 但前因後果我搞不清楚所以一直看不太懂。
    2020-11-01 22:46:07
好帮手慕久久 2020-11-01 10:49:27

同学你好,问题解答如下:

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重新下载依赖包。

祝学习愉快!

  • 提问者 weixin_慕雪0272820 #1
    老師 第二調我不是很理解關於package.json和package-lock.json的區別是什麼? 不都是实际安装的各个包的具体来源和版本号嗎? 為什麼要有二個檔案?
    2020-11-01 17:35:35
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师