vue之 package.json和package-lock.json

一、package.json

定义了当前项目所需要引用的各个模块,可以手工修改配置,也可以删除后,使用npm init命令重新自动生成。
但是该文件只锁定大版本号,也就是版本号的第一位,所以你会发现两个文件中同一个包的版本号不一致,但是第一位一定是一致的。

1、锁定小版本

如需锁定小版本,修改配置文件,去掉版本号前面的小尖尖即可。

"dependencies": {
  "axios": "^0.21.1",
  "element-ui": "2.15.1",
},

例如:
此处的axios,若执行npm install,会下载当前大版本下的最新版本。
而此处的element-ui,若执行npm install,会锁定下载2.15.1版本。

2、开发环境和生产环境

有些包是开发过程中需要使用,打包部署到线上无需使用的。
在安装的时候注意使用安装命令:
npm install --save -dev即npm install -D
仅在开发环境时,安装使用。
而npm install默认是安装在开发和生产环境的。
查看package.json文件有:

"dependencies": {
  "axios": "^0.21.1",
  "echarts": "^5.3.1"
  ……
},
"devDependencies": {
  "@vue/cli-plugin-babel": "^4.5.10",
  "@vue/cli-plugin-eslint": "^4.5.10",
  "@vue/cli-service": "^4.5.10",
  "@vue/eslint-config-standard": "^5.1.2",
  "babel-eslint": "^10.1.0",
  "eslint": "^6.7.2",
  "eslint-plugin-import": "^2.20.2",
  "eslint-plugin-node": "^11.1.0",
  "eslint-plugin-promise": "^4.2.1",
  "eslint-plugin-standard": "^4.0.0",
  "eslint-plugin-vue": "^6.2.2",
  "sass": "^1.26.5",
  "sass-loader": "^8.0.2",
  "vue-template-compiler": "^2.6.11"
},

像axios、echarts等在生产环境需要使用的,就默认安装至dependencies(开发和生产环境);
像eslint、sass等只在开发的过程中使用的,打包以后无需再用,就使用-D命令,仅安装至devDependencies(开发环境)。

但是!!

在这里插入图片描述

经过测试我发现,将所有的包都放到devDependencies下,删掉node_modules里面的包。

然后重新执行npm install,再执行npm run build,发现打包出来的dist大小完全不变,且部署到线上环境能正常运行。
那我怀疑npm install是同时安装在了开发和生产环境,于是执行npm install -D命令,效果一样,打包大小不变,部署线上正常运行。
奇了怪了见了鬼了,那这个dependencies和devDependencies的意义何在呢?只是为了规范???

二、package-lock.json

是在npm install时生成的,用来记录当前状态下实际安装的各个包的具体来源和版本号。

三、node_mouduls

我以为:

  • 执行npm
    install时,根据package.json生成package-lock.json,对应下载相应版本的第三方包至node_mouduls。
    现象是:
  • 只删掉package-lock.json文件,执行npm
    install时,生成package-lock.json文件会根据node_mouduls已有的包来。
  • 只删掉node_mouduls文件夹,执行npm
    install时,会根据package-lock.json文件去下载相应的包至node_mouduls。
  • 同时删掉package-lock.json文件、node_mouduls文件夹,执行npm
    install时,生成package-lock.json文件才是最新的根据package.json来的,然后会去下载最新的包至node_mouduls。

四、补充

1、安装指定版本参考文档

https://blog.csdn.net/xuaner8786/article/details/81630445

当你只有package-lock.json文件而没有package.json文件时,这通常意味着你的项目是从其他地方复制过来的,或者你的项目丢失了package.json文件。package.json是一个用来管理和描述项目依赖关系的文件,它包含了项目所需的各种包和模块的信息。 如果你丢失了package.json文件,你可以尝试以下几种方法来恢复它: 1. 查找备份:如果你曾经创建过项目的备份,可以尝试在备份中找到package.json文件并复制回项目目录。 2. 使用npm init命令重新生成:打开终端或命令提示符,进入到项目目录,并运行以下命令来重新生成package.json文件: ``` npm init ``` 按照提示回答一些问题,然后npm将会生成一个新的package.json文件。 3. 手动创建package.json文件:如果你知道项目所需的依赖关系,你可以手动创建一个package.json文件。在项目根目录下创建一个空的文本文件,并将其命名为package.json。然后在文件中添加以下基本结构,并根据项目需要添加各种依赖项: ``` { "name": "your-project-name", "version": "1.0.0", "dependencies": { // 添加你的依赖项 }, "devDependencies": { // 添加你的开发依赖项 } } ``` 注意:手动创建package.json文件时,确保文件格式正确,特别是JSON语法方面。 无论你选择哪种方法,恢复了package.json文件后,可以使用npm或yarn等工具来安装项目所需的依赖项。运行以下命令来安装依赖项: ``` npm install ``` 希望这些方法能够帮助你恢复丢失的package.json文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值