news 2026/7/31 18:58:07

vue3里“devDependencies 是开发环境依赖,dependencies 是生产环境依赖”

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
vue3里“devDependencies 是开发环境依赖,dependencies 是生产环境依赖”

“devDependencies 是开发环境依赖,dependencies 是生产环境依赖”

  1. 核心原因:图标库是“构建素材”,而非“运行时依赖”
    现代前端项目(如使用 Vite 或 Webpack)在打包时,打包工具会分析代码中的 import 语句。@vicons 提供的本质上是 SVG 图标组件,它们会在构建阶段被打包工具解析,并最终转换成纯粹的 HTML 字符串或内联 SVG,合并到你的生产代码(dist 目录)中。
    也就是说,在生产环境中,你的项目根本不需要再去“运行”或“寻找” @vicons 这个包本身,它已经被拆解并融入到你的业务代码里了。
  2. 区分两种依赖的本质
    dependencies(生产依赖):存放的是项目运行时真正需要的库,比如 Vue、React、Axios、Lodash 等。这些库必须在生产环境中真实存在并被执行。
    devDependencies(开发依赖):存放的是仅在开发、构建、测试阶段需要的工具。比如构建工具(Webpack/Vite)、代码检查工具(ESLint)、测试框架(Jest),以及像 @vicons 这样在构建时就会被消费掉的素材库。
  3. 放在 devDependencies 的好处
    优化部署体积:在生产环境部署时,可以通过 npm install --production 跳过 devDependencies 的安装。这样服务器就不需要下载庞大的图标库源码,节省空间并加快部署速度。
    职责清晰:明确告诉其他开发者,这个包只在开发和打包阶段使用,运行期不需要它。
    💡 一个常见的误区
    很多人误以为“放在 devDependencies 里的包,打包后就会丢失”。这是错误的。
    只要你是在代码中正常 import 了这些图标,无论它们是在 dependencies 还是 devDependencies,打包工具都会把它们打进最终的产物中。devDependencies 只是决定了部署时服务器要不要重新下载它,而不影响打包过程。
    总结:对于前端应用(App/Web)来说,像 @vicons 这种会被打包工具处理成静态资源的组件库,放在 devDependencies 是最规范的做法。但如果你是在开发一个供别人安装的 npm 组件库,那情况就不同了,可能需要放在 dependencies 中以便父项目也能获取到这些依赖。
要确定一个包被安装到了哪个依赖列表(dependencies 还是 devDependencies),或者你想主动控制它安装到哪里,可以通过以下几种方式:
  1. 查看 package.json 文件(最直观)
    打开你项目根目录下的 package.json 文件,直接搜索该包的名字。
    如果它在 “dependencies”: { … } 对象中,说明它是生产依赖。
    如果它在 “devDependencies”: { … } 对象中,说明它是开发依赖。
  2. 使用命令主动控制安装位置
    如果你在安装时想明确指定它放在哪里,可以加上对应的参数:
    安装到 dependencies(生产依赖):
npm install@vicons/fluent-S# 或者写全称 npm install@vicons/fluent--save

(注:在较新的 npm 版本中,直接运行 npm install @vicons/fluent 默认就是加 -S 参数,会写入 dependencies)
安装到devDependencies(开发依赖)

npm install@vicons/fluent-D# 或者写全称 npm install@vicons/fluent--save-dev
  1. 临时测试(不写入 package.json)
    如果你只是想临时安装一个包测试一下,不想把它记录在任何依赖列表里,可以使用 --no-save 参数:
npm install@vicons/fluent--no-save

这样包只会下载到本地的 node_modules 文件夹中,但不会修改你的 package.json 文件。
总结一下:
想确认在哪:看 package.json
想装到生产环境:用 npm install xxx -S
想装到开发环境:用 npm install xxx -D

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

OpenWork扩展开发工具链详解:提升开发效率的必备资源

OpenWork扩展开发工具链详解:提升开发效率的必备资源 【免费下载链接】openwork The open-source alternative to Claude Cowork (powered by opencode) 项目地址: https://gitcode.com/GitHub_Trending/ope/openwork OpenWork作为Claude Cowork的开源替代方…

作者头像 李华
网站建设 2026/7/31 18:56:40

7 月技术写作回顾:写了 310 篇文章,最重要的 10 个结论

7 月技术写作回顾:写了 310 篇文章,最重要的 10 个结论 一、310 篇文章背后,不是数字,是认知迭代 7 月持续 31 天,按日均 10 篇的节奏产出,总产出量 310 篇。这个数字不算小,但比数字更有价值…

作者头像 李华
网站建设 2026/7/31 18:55:49

从南京到全球求职市场,蒸汽教育是一家怎样的公司?

搜索“蒸汽教育怎么样”时,留学生和家长可能会先遇到一个基础问题: “蒸汽教育”“蒸汽求职”“STEM Career Group”和“南京蒸汽职业咨询有限公司”,说的是同一家公司吗?为什么中文品牌、英文名称和合同主体看起来并不一样&#…

作者头像 李华
网站建设 2026/7/31 18:51:52

3步搞定专业图表:免费在线Mermaid编辑器终极指南

3步搞定专业图表:免费在线Mermaid编辑器终极指南 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-live-editor …

作者头像 李华
网站建设 2026/7/31 18:50:24

Decoy Font:当字体学会“说谎”,AI 的视觉认知遭遇新挑战

👋 大家好,我是 带娃的IT创业者,CSDN 人工智能领域新星创作者,一边带娃一边创业的全栈工程师。专注 AI 大模型应用落地、Python 实战进阶与 AI 开发工具链(Python / FastAPI / 大模型 / AI 编程)。 &#x…

作者头像 李华
网站建设 2026/7/31 18:44:00

老天奶!NAS竟然这么玩?《罪恶都市》部署在NAS中,网页直接玩

老铁们,还记得你们小时候第一次接触电脑,玩的是哪款游戏吗?暴力摩托?侠盗飞车?我清晰的记得我玩的是罪恶都市。最喜欢开里面的坦克或者大巴车。没想到今天这个项目竟然可以部署在NAS中。光看着画面就很爽,第…

作者头像 李华