news 2026/5/9 11:54:45

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
前端框架使用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 服务器 + 生产环境,装出来的依赖【完全一样】

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 11:51:32

8款主流网盘直链解析工具:彻底告别下载限速,实现高速下载自由

8款主流网盘直链解析工具&#xff1a;彻底告别下载限速&#xff0c;实现高速下载自由 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中…

作者头像 李华
网站建设 2026/5/9 11:48:31

Erin Claire Carson 博士(计算数学科学)

文章目录&#x1f4ca; 学术生涯概览&#x1f9e0; 核心研究方向与代表性成果&#x1f3c6; 主要荣誉与奖项&#x1f517; 关键互联网链接Erin Claire Carson 博士是数值线性代数与高性能计算领域的杰出青年学者&#xff0c;目前担任布拉格查理大学数学与物理学院数值数学系副教…

作者头像 李华
网站建设 2026/5/9 11:48:31

多核处理器与并行计算在SoC设计中的优化实践

1. 多核处理器与并行计算基础在SoC设计领域&#xff0c;单核处理器性能提升正面临物理极限的挑战。传统方法如提高时钟频率、增加流水线深度和扩大缓存容量&#xff0c;其边际效益正急剧递减。以28nm工艺节点为例&#xff0c;频率每提升10%可能导致功耗增加30%以上&#xff0c;…

作者头像 李华
网站建设 2026/5/9 11:48:30

CANN/hcomm引擎上下文复制

HcclEngineCtxCopy 【免费下载链接】hcomm HCOMM&#xff08;Huawei Communication&#xff09;是HCCL的通信基础库&#xff0c;提供通信域以及通信资源的管理能力。 项目地址: https://gitcode.com/cann/hcomm 产品支持情况 Ascend 950PR/Ascend 950DT&#xff1a;支持…

作者头像 李华
网站建设 2026/5/9 11:46:40

CANN/sip Strmm三角矩阵乘法

Strmm 【免费下载链接】sip 本项目是CANN提供的一款高效、可靠的高性能信号处理算子加速库&#xff0c;基于华为Ascend AI处理器&#xff0c;专门为信号处理领域而设计。 项目地址: https://gitcode.com/cann/sip 产品支持情况 产品是否支持Atlas 200I/500 A2 推理产品…

作者头像 李华
网站建设 2026/5/9 11:44:36

Go语言怎么做密码加密_Go语言bcrypt密码哈希教程【总结】

bcrypt.GenerateFromPassword报错invalid cost因cost须为4–31整数&#xff0c;常见误传0、负数或超31值&#xff1b;CompareHashAndPassword mismatch多因哈希被截断或含空格&#xff1b;bcrypt完全支持UTF-8密码包括中文&#xff0c;崩因前端编码错误&#xff1b;切换算法需全…

作者头像 李华