繁体   English   中英

从不同的目录运行早午餐并使用相对路径

[英]Run brunch from different directory and use relative paths

我们希望在多个项目中使用相同的构建系统。 我有一个工作早午餐配置文件,我想放在一个git子模块中,以便可以在多个项目中引用该子模块,并且更改很容易传播(比复制和粘贴更不易碎并设置brunch-config.js的权威来源) 。

将brunch-config.js放在git子模块中会导致我的文件夹结构如下所示:

WebApp // git root
|---Brunch-Build-System // git submodule
|   |---brunch-config.js
|---node_modules
|---source // all the source code I want compiled

早午餐运行假设brunch-config.js将与正在编译的源相同或更高。 在此设置中,情况并非如此。 我已经尝试修改我的brunch-config.js使用相对路径无济于事。 这是我目前所处的早午餐配置的files块,没有任何相对路径尝试:

files: {
  javascripts: {
    joinTo: {
      'js/lib.js': /^(?!source\/)/
    },
    entryPoints: {
      'source/scripts/app.jsx': {
        'js/app.js': /^source\//
      },
    }
  },
  stylesheets: {joinTo: 'css/core.css'}
}

如果上面给出了所需的文件夹结构,我如何修改它以使用相对路径? 这甚至可能吗?

子模块需要与父repo中的根文件夹关联:它是gitlink主repo索引中特殊条目 ),它记录了子模块检出的SHA1。

在您的情况下,最好是在post-checkout钩子中使用脚本,确保在以下之间存在符号链接

  • brunch-config.js在正确的位置和
  • 来自子模块的Brunch-Build-System / brunch-config.js

包含在钩子中的线条将是沿线的

#!/bin/bash

if [ ! -e /correct/path/for/brunch-config.js ]; then
  ln -s /correct/path/for/brunch-config.js Brunch-Build-System/brunch-config.js
fi

虽然OP在Windows上:

我最终只是以编程方式复制文件并gitignoreing复制的文件

通常,早午餐支持相对路径。 但为了使其工作,您必须首先确保watched其他文件夹。 请参阅文档中的此部分 对于您的情况,请将其添加到您的配置中。

paths = {
  watched: ['../source', '../node_modules'],
}

然后通过..\\/前置RegExs。

joinTo: {
  'js/lib.js': /^..\/(?!source\/)/
},
entryPoints: {
  'source/scripts/app.jsx': {
    'js/app.js': /^..\/source\//
  },
}

您还可以编写一个将路径作为参数的函数,而不是RegEx,并且必须返回是否应该包含路径。 请参阅文档中的此部分

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM