当前位置: 首页 > news >正文

前端框架使用vue-cli( 第一层:依赖与环境层)

第一层:依赖与环境层

  1. node_modules
  2. package.json
  3. package-lock.json

介绍:
这个文章主要是说明vue-cli的,对于nodejs的环境安装,以及npm的使用配置,就不多说了
我们将在有nodejs的环境
使用npm安装好对应的依赖
依赖安装的具体位置,将在node_modules这个包下
像pom一样,展示依赖的具体的信息,讲展示在

package.json 与 package-lock.json 详解


一、package.json

文件作用

项目的"身份证"+“依赖清单”+“脚本入口”,声明项目需要什么、怎么运行。


完整示例及逐行解释

{// ========== 1. 项目基本信息 =========="name":"my-vue-project",// 项目名称,唯一标识(发布到 npm 时必需)"version":"1.0.0",// 版本号,遵循语义化版本(major.minor.patch)// 1.0.0 → 1(大版本/不兼容改动).0(新功能/兼容).0(bug修复)"description":"这是一个Vue项目",// 项目描述,npm 搜索时显示"author":"张三 <zhangsan@example.com>",// 作者信息"license":"MIT",// 开源协议类型"private":true,// 防止误发布到 npm 仓库(企业项目一般都是 true)// ========== 2. 工程命令 =========="scripts":{"serve":"vue-cli-service serve",// npm run serve → 启动开发服务器"build":"vue-cli-service build",// npm run build → 打包生产环境代码"lint":"vue-cli-service lint",// npm run lint → 检查代码规范"test":"jest",// npm run test → 运行测试"dev":"npm run serve"// 别名,可以自定义任何命令},// ========== 3. 生产依赖 =========="dependencies":{"vue":"^3.2.0",// 上线后也必须有的依赖// ^3.2.0 表示 3.2.0 ≤ 版本 < 4.0.0"axios":"^1.5.0",// HTTP 请求库"element-plus":"^2.4.0",// UI 组件库"vue-router":"^4.2.0",// 路由"pinia":"^2.1.0"// 状态管理},// ========== 4. 开发依赖 =========="devDependencies":{"@vue/cli-service":"^5.0.0",// Vue CLI 构建工具,只在开发时需要"eslint":"^8.0.0",// 代码检查工具"prettier":"^3.0.0",// 代码格式化工具"jest":"^29.0.0"// 测试框架,只在开发时需要},// ========== 5. 版本范围配置 =========="engines":{"node":">=16.0.0",// 要求 Node.js 版本 ≥ 16"npm":">=8.0.0"// 要求 npm 版本 ≥ 8},// ========== 6. 入口文件 =========="main":"src/main.js",// 模块入口(Node.js 环境使用)"module":"dist/index.js",// ES Module 入口(打包工具使用)// ========== 7. 发布配置 =========="files":["dist","src","*.js"],// npm publish 时包含哪些文件"keywords":["vue","admin","dashboard"],// 关键词,方便 npm 搜索"repository":{"type":"git","url":"https://github.com/xxx/my-project.git"},// 代码仓库地址"bugs":{"url":"https://github.com/xxx/my-project/issues"},// issue 反馈地址"homepage":"https://github.com/xxx/my-project#readme"// 项目主页}

dependencies vs devDependencies 核心区别

dependenciesdevDependencies
何时需要运行时开发/构建时
典型包vue、axios、element-uiwebpack、eslint、jest
生产打包✅ 会打包进去❌ 不会打包进去
举例Vue 框架在浏览器里需要运行ESLint 只在写代码时检查,浏览器不需要
npm install vue → 保存到 dependencies npm install -D webpack → 保存到 devDependencies npm install --save-dev jest → 同上

版本符号详解

{"axios":"1.5.0",// 精确版本,只装 1.5.0"lodash":"^4.17.0",// 兼容:4.17.0 ≤ 版本 < 5.0.0"vue":"~3.2.0",// 更严格:3.2.0 ≤ 版本 < 3.3.0"react":">=17.0.0",// 大于等于 17.0.0"express":"4.x",// 主版本固定:4.x.x 最新"webpack":"*"// 任意版本(不推荐)}

^ 和 ~ 的区别

版本号:major.minor.patch(主版本.次版本.补丁版本) ^1.2.3 允许: 1.2.3, 1.2.4, 1.3.0, 1.9.9 不允许: 2.0.0(主版本变了) ~1.2.3 允许: 1.2.3, 1.2.4, 1.2.9 不允许: 1.3.0(次版本变了),2.0.0

二、package-lock.json

文件作用

精确锁定依赖树中每一个包的版本和下载地址,保证每次安装结果完全相同。


完整示例及逐行解释

{// ========== 1. 文件元信息 =========="name":"my-vue-project",// 与 package.json 同名"version":"1.0.0",// 与 package.json 同版本"lockfileVersion":3,// lock 文件格式版本(npm v7+ 使用 version 3)// ========== 2. 整体依赖树 =========="packages":{// node_modules 中每个包的信息"":{// 空字符串代表项目根目录"name":"my-vue-project","version":"1.0.0","dependencies":{"vue":"^3.2.0","axios":"^1.5.0"},"devDependencies":{"@vue/cli-service":"^5.0.0"}},// ========== 3. 具体依赖包信息 =========="node_modules/axios":{"version":"1.5.0",// 精确安装的版本号"resolved":"https://registry.npmmirror.com/axios/-/axios-1.5.0.tgz",// 从哪个地址下载的(镜像源地址)"integrity":"sha512-pN/7nO8I4S3JzZEvfD4F9EHG8b0Z3KxnYX5rYkPcAUlT4QcE9v5DHhUW20wR1e5/2kZzWwCT7WiuGksKQ1fog==",// 文件完整性校验(SHA512哈希),防止下载文件被篡改"peerDependencies":{},// 对等依赖(如果有要求)"engines":{"node":">=12.0.0"}// 要求的环境版本},"node_modules/axios/node_modules/follow-redirects":{// axios 依赖的 follow-redirects(嵌套依赖)"version":"1.15.3","resolved":"https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.3.tgz","integrity":"sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q=="},"node_modules/vue":{"version":"3.2.47","resolved":"https://registry.npmmirror.com/vue/-/vue-3.2.47.tgz","integrity":"sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvHavj5EeMGlBEo/9WgU4D/mpB/2y1cXpp+rQ4nU3A==","dependencies":{"@vue/compiler-dom":"3.2.47","@vue/runtime-dom":"3.2.47"// vue 依赖的其他包也会被锁定}},"node_modules/@vue/compiler-dom":{"version":"3.2.47","resolved":"https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz","dependencies":{"@vue/shared":"3.2.47"}},"node_modules/@vue/runtime-dom":{"version":"3.2.47","dependencies":{"@vue/runtime-core":"3.2.47","@vue/shared":"3.2.47"}},"node_modules/eslint":{// devDependencies 中的包也会被锁定"version":"8.55.0","resolved":"https://registry.npmmirror.com/eslint/-/eslint-8.55.0.tgz","dev":true// dev: true 标记这是开发依赖}},// ========== 4. 依赖关系(旧版格式,兼容保留)=========="dependencies":{// 这是 npm v6 及之前的格式,新版也会保留用于兼容"axios":{"version":"1.5.0","resolved":"https://registry.npmmirror.com/axios/-/axios-1.5.0.tgz","integrity":"sha512-xxx...","requires":{"follow-redirects":"^1.15.0"}}}}

三、两个文件解决的核心问题

问题1:版本漂移

场景

package.json: "axios": "^1.5.0" 2024-01-01 安装: axios@1.5.0 2024-03-01 安装: axios@1.6.0(新版本) 张三(1月安装): 1.5.0 ✅ 正常运行 李四(3月安装): 1.6.0 ❌ 出现 bug(新版本有 breaking change)

lock 文件解决

package-lock.json 锁定: axios@1.5.0 张三 → npm ci → 安装 1.5.0 ✅ 李四 → npm ci → 安装 1.5.0 ✅

问题2:间接依赖失控

场景

你只写了: dependencies: { "axios": "^1.5.0" } 但 axios 自己依赖了 "follow-redirects": "^1.0.0" 2024-01-01 安装: follow-redirects@1.0.0 ✅ 能用 2025-01-01 安装: follow-redirects@2.0.0 ❌ API 变化,axios 不兼容

lock 文件解决

package-lock.json 锁定了整个依赖树: axios@1.5.0 └── follow-redirects@1.15.3(特定版本) 间接依赖也被锁定,不会乱变

问题3:下载源不一致

场景

张三用官方源: registry.npmjs.org 李四用淘宝源: registry.npmmirror.com 有时镜像同步有延迟,两个源同一时刻版本可能不同

lock 文件解决

package-lock.json 记录了具体的 resolved 下载地址 "resolved": "https://registry.npmmirror.com/axios/-/axios-1.5.0.tgz" 所有人都从同一个地址下载同一份文件

问题4:文件被篡改风险

lock 文件解决

package-lock.json 记录了 integrity 哈希值 "integrity": "sha512-pN/7nO8I4S3JzZEvfD4F9EHG8b0Z3KxnYX5rYkPcAUlT4QcE9v5DHhUW20wR1e5/2kZzWwCT7WiuGksKQ1fog==" 下载后校验哈希,如果文件被篡改 → 安装失败

四、什么时候使用哪个命令

命令读取文件行为适用场景
npm installpackage.json + lock按 lock 安装(如果 lock 存在),否则按 package.json 解析并生成 lock日常开发(首次或不确定时)
npm cilock 文件(强制需要)严格按 lock 安装,更快更准CI/CD、团队协作(保证环境一致)
npm updatepackage.json按 package.json 的范围升级到最新匹配版本,更新 lock想要升级依赖时
npm install axios@1.6.0package.json + lock安装指定版本,同时更新两个文件手动升级某个包

五、团队协作最佳实践

✅ 必须做 1. package-lock.json 提交到 git 2. 使用 npm ci 代替 npm install(CI 环境) 3. 所有人使用相同版本的 npm ❌ 禁止做 1. 把 package-lock.json 加入 .gitignore 2. 手动编辑 package-lock.json 3. 混合使用 npm 和 yarn(各自的 lock 文件不同)

六、一句话总结

package.json = "我想要什么"(声明 + 范围) package-lock.json = "我实际用了什么"(精确锁定 + 完整性校验) 两者配合 = 团队成员 + CI 服务器 + 生产环境,装出来的依赖【完全一样】

http://www.jsqmd.com/news/782789/

相关文章:

  • 2026年新疆票据印刷采购全攻略:源头直供如何降低企业成本80% - 优质企业观察收录
  • CANN/opbase:设置张量原始地址
  • CANN/ops-fft贡献指南
  • 20241223 2025-2026-2 《Python程序设计》实验三报告
  • 中国楼宇自控行业洗牌 楼宇自控厂家头部企业有谁?楼宇自控十大品牌 - 博客万
  • 网关支付 VS 纯代付:核心差异与适用场景
  • 影刀RPA如何实现店群自动化:拆解多浏览器并发,打造拼多多与TEMU的“超级航母”矩阵
  • AI专著生成新方法!借助工具,快速产出20万字高质量专著!
  • 一个老旧小区门禁改造项目的技术选型复盘:从云端到边缘
  • 亨得利腕表维修行业内部解密:假官方年骗1386起、保养套路大起底与全国官方直营网点联络大全 - 亨得利腕表维修中心
  • 加盟岩茶品牌,新手小白如何甄别真假“全程带教”?——以溪谷留香为样本的赋能体系深度解构 - 商业科技观察
  • 博客园优化折叠框
  • 为什么配置了Linux kernel以后.config文件没有起作用?
  • CANN/torchtitan-npu测试指南
  • CANN/hcomm引擎上下文复制
  • 2026年新疆票据印刷与热敏收银纸采购完全指南:源头直供降成本方案 - 优质企业观察收录
  • 3步掌握开源游戏加速:OpenSpeedy高效配置完全指南
  • 魔兽争霸3终极兼容性修复指南:5个简单步骤让经典游戏在Windows 11完美运行
  • 2026年水刀配件采购全攻略:从成都源头厂家到一站式解决方案 - 企业名录优选推荐
  • 江西菜代表品牌有哪些?2026年5大品牌实测推荐 - 速递信息
  • CANN/ops-cv最近邻上采样2D算子
  • ClaudeCode用户如何配置Taotoken解决API密钥被封与Token不足问题
  • 本地AI智能体平台搭建:基于Docker与Ollama的自动化工作流实践
  • QLoRA量化技术在日语技术文档处理中的应用实践
  • 盘活闲置沃尔玛购物卡,让每一笔钱都花在刀刃上 - 团团收购物卡回收
  • 2026耐火电力电缆品牌实测:优质厂家深度测评+工程采购避坑全指南 - 深度智识库
  • 盘活分期乐购物额度,轻松优化你的个人现金流 - 团团收购物卡回收
  • 2026年重庆留学机构哪家口碑最好?预算有限挑选攻略 - 速递信息
  • CANN/tensorflow NPURunConfig基础选项
  • CANN ops-math ConcatD算子