如何更改Yarn默认包目录?

时间:2016-11-08 13:40:29

标签: laravel config yarnpkg

当Yarn用于安装依赖项时,默认情况下会将它们放在node-modules目录中。

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

4 个答案:

答案 0 :(得分:22)

yarn install --modules-folder ./resources

<强>更新 请关注此GitHub Issue,因为此功能不太稳定。

更新2 :从下面的Damien's回答,您可以将--install.modules-folder "./resources"添加到.yarnrc file,这样您就不需要继续传递命令行参数在每个后续调用中。请注意,需要双引号;如果没有这些,您将收到Invalid value type 1:25或类似的错误。

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

答案 1 :(得分:20)

您可以使用以下内容创建 .yarnrc 文件:

--modules-folder resources

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

答案 2 :(得分:0)

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

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

似乎 yarn run 不使用 .yarnrc

第三,将源代码放在单独的目录下是一个好主意,该目录作为 Docker 卷或 Vagrant 共享文件夹与 node_modules 或供应商分开安装。在 Docker 上,卷安装在您的当前目录上(因此您不应该例如 mount . -> /app,而是 src -> /app/src )。由于“sendfile”-kernel 调用错误,如果从共享文件夹提供 node_modules,则会导致 JS 和 CSS 文件在两者之间随机剪切。

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

答案 3 :(得分:-3)

根据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/"
  }
}

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