如果我使用
yarn add <package-name>
,Yarn 将安装 <package-name>
的依赖项和 devDependency。
是故意的吗
我检查了文档,但找不到阻止安装开发依赖项的方法。
devDependencies
是用于编译一个包的源代码的依赖项,因此如果我在生产环境中,我不需要它们。
--production
标志不再存在。请改用此命令:
yarn workspaces focus --production
更多详细信息请参见此处 https://yarnpkg.com/cli/workspaces/focus
使用
--production=true
(或简称为 --production
或简称 --prod
)。这确实是正常行为; Yarn 假设您处于“开发”上下文中,除非您的 NODE_ENV 环境变量设置为“生产”。
查看 Yarn 的 文档。
正如@ddotsenko的评论中所说
不是“损坏”,而是“设计糟糕”——如果yarn需要解析“完整树”,prod仍然会下载并“安装”开发包。只需这可以将 210 MB 的 node_modules 删除到 70 MB,类似于使用
并匹配yarn.lock 和 --product 将按预期工作。yarn install --production --frozen-lockfile
npm
和
pnpm
。
NODE_ENV=production
还可以防止安装 devDependency
node_modules
并被假定为包的一部分,因此包源将自动包含
devDependencies
。尽管如此,
yarn workspaces focus <name> --production
允许安装工作区包而无需`devDependency。请参阅 https://yarnpkg.com/cli/workspaces/focus 了解更多信息。
如果我调用不,这听起来像是一个错误。我在最新版本的yarn v1 中没有看到这种行为。
yarn add <my-package>
,Yarn 将安装<my-package>
的依赖项和 devDependency。这是正常行为吗?
如果我
yarn add foo
到我的项目,我应该安装:
foo
foo
的任何依赖关系及其递归依赖关系
foo
的devDependency
yarn add
,则可以假设您处于“开发”环境中。