当我只需要构建时,为啥 yarn 会安装开发依赖项?
Posted
技术标签:
【中文标题】当我只需要构建时,为啥 yarn 会安装开发依赖项?【英文标题】:Why will yarn install dev dependencies when I just need the builds?当我只需要构建时,为什么 yarn 会安装开发依赖项? 【发布时间】:2018-09-06 21:54:26 【问题描述】:如果我调用 yarn add <my-package>
,Yarn 将安装 <my-package>
的依赖项和 devDependencies。这是正常行为吗?
我检查了文档,但找不到阻止它安装开发依赖项(我不需要)的方法。我相信 devDependencies 是用于将源代码编译到构建脚本中的依赖项。构建我的应用程序我只需要构建。
【问题讨论】:
【参考方案1】:Yarn 有一个 --production 选项,这将导致它只安装生产依赖项。这显示here
【讨论】:
【参考方案2】:使用--production=true
(或简称--production
或--prod
)。这确实是正常行为; Yarn 假定您处于“开发”环境中,除非您的 NODE_ENV 环境变量设置为“生产”。
看看 Yarn 的documentation。
【讨论】:
这个功能似乎因为github.com/yarnpkg/yarn/issues/6323而被破坏了 不是“损坏”而是“设计不良”--prod
仍然会下载和“安装”dev
包如果纱线需要解析“完整树”。只需使用 yarn install --production --frozen-lockfile
并匹配 yarn.lock
和 --production
即可按预期工作。
@ddotsenko :这很有帮助,现在是一个答案。请写下你自己的功劳,并@通知我删除我的。
--production
标志已被 yarn 2.0 弃用。如何防止yarn 2.0安装dev依赖?
派对迟到了,但在 Yarn 2+ 中这样做的新方法是使用 yarn workspaces focus --production --all
: yarnpkg.com/cli/workspaces/focus【参考方案3】:
如the comment by @ddotsenko中所说
如果 yarn 需要解析“完整树”,则不是“损坏”而是“设计不佳”--prod 仍会下载和“安装”开发包。只需使用
yarn install --production --frozen-lockfile
并匹配 yarn.lock 和 --production 即可按预期工作。
这可以将 210 MB 的 node_modules 删除为 70 MB,类似于 npm
和 pnpm
。
【讨论】:
【参考方案4】:NODE_ENV=production
也阻止安装 devDependencies
【讨论】:
在执行yarn
或yarn install
之前使用NODE_ENV=production
作为环境以上是关于当我只需要构建时,为啥 yarn 会安装开发依赖项?的主要内容,如果未能解决你的问题,请参考以下文章