如何更改 Yarn 默认包目录?

How to change Yarn default packages directory?

当使用 Yarn 安装依赖时,它默认将它们放在 node-modules 目录中。

如何将其更改为 Laravel resources 文件夹?
.bowerrc 用于 bower 设置 "directory": "resources/assets"

根据Yarn Docs,可以在package.json文件中指定目录

{
  "directories": {
    "lib": "path/to/lib/",
    "bin": "path/to/bin/",
    "man": "path/to/man/",
    "doc": "path/to/doc/",
    "example": "path/to/example/"
  }
}

安装包时,您可以指定放置二进制文件、手册页、文档、示例等的确切位置。

yarn install --modules-folder ./resources

更新: 请密切关注此 GitHub Issue,因为此功能不太稳定。

更新 2: 来自 Damien's answer below, you can add --install.modules-folder "./resources" to a .yarnrc file 这样您就不需要为每个后续调用连续传递命令行参数。注意双引号是必须的;没有这些,您将收到 Invalid value type 1:25 或类似错误。

然后您可以将 .yarnrc 提交到源代码管理,以便项目中的其他开发人员可以自动使用相同的设置。

您可以创建一个 .yarnrc 文件,内容如下:

--modules-folder resources

这样每个 yarn 命令都会设置此参数。

使用 yarn 运行 时,您需要执行以下操作:

   ln -sf /opt/myproject/node_modules
   yarn config set -- --modules-folder /opt/myproject/node_modules

yarn 运行 似乎没有使用 .yarnrc

第三,最好将您的源代码放在单独的目录下,作为 Docker 卷或与 node_modules 或供应商分开的 Vagrant 共享文件夹。在 Docker 上,卷挂载在您当前的目录上(因此您不应该挂载 . -> /app,而是 src -> /app/src )。这同样适用于 Oracle virtualbox 的 vagrant,因为“sendfile”-kernel 调用错误导致 JS 和 CSS 文件在共享文件夹中提供 node_modules 时被随机剪切。

第四,由于二进制不兼容的原因,node_modules 应该在虚拟机/映像中烘焙而不是在卷共享文件夹中。 Node.js 实际上是针对 c++ 库编译的,这意味着如果您 运行 npm/yarn 安装并共享 node_modules 从 Mac 到 Docker (运行ning Linux),你会得到分段错误,因为 OSX 二进制文件与 Linux 二进制文件不兼容。如果您使用例如 Linux 到 Linux 也是如此Ubuntu 在主机上,Alpine Linux 在容器上,或不同的 Ubuntu 版本。