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

Javascript 从不同的目录运行早午餐,并使用相对路径,javascript,git,git-submodules,brunch,Javascript,Git,Git Submodules,Brunch,我们希望在多个项目中使用相同的构建系统。我有一个工作的brunch配置文件,我想把它放在git子模块中,这样子模块就可以在多个项目中被引用,并且更改很容易传播(不像复制粘贴那样脆弱,并设置了brunch config.js的权威源) 但是,将brunch-config.js放入git子模块会导致我的文件夹结构如下所示: WebApp // git root |---Brunch-Build-System // git submodule | |---brunch-config.js |---

我们希望在多个项目中使用相同的构建系统。我有一个工作的brunch配置文件,我想把它放在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的运行假设Brunch-config.js与正在编译的源代码处于相同或更高的级别。在此设置中,情况并非如此。我试图修改我的brunch-config.js,使用相对路径,但没有效果。这是我的早午餐配置的
文件
块,它目前的状态,没有任何相对路径尝试:

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

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

子模块需要与父repo中的根文件夹相关联:记录该子模块签出的SHA1的是(A)

在您的情况下,最好使用脚本,以确保以下各项之间存在符号链接

  • 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上运行:

最后,我只是以编程的方式复制了文件,并对复制的文件进行了git签名


通常,早午餐支持相对路径。但是为了使它工作,您必须首先确保其他文件夹被监视。看见对于您的情况,将其添加到您的配置中

paths = {
  watched: ['../source', '../node_modules'],
}
然后通过
。\/
在正则表达式前面加上前缀

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

您还可以编写一个函数来代替正则表达式,该函数将路径作为参数,并且必须返回是否应包含该路径。请参见。

您能将我在签出后挂钩中放入的行包括在内以制作符号链接吗?@ScottH我编辑了答案,其中考虑了挂钩的外观,但在Windows 10上使用此选项时,它似乎复制了文件,而不是像
mklink
那样创建符号链接。有什么想法吗?此外,我还必须切换
ln
命令的参数顺序。然后,如果您以管理员身份运行mklink,则可以实际使用它。如果没有,请使用mklink/J。但是,我在bash脚本中使用
mklink
时遇到了问题,它说“找不到命令”。AFIK,Brunch支持相对路径。你在另一个操作系统上试过吗?我没有,但我们要求它在Windows上运行,这就是我试过的。如何将相对路径集成到现有的正则表达式中@JohannesFilterHey Scott,你看了我的答案了吗?我刚刚尝试了这个,它促使我有一个package.json,其中包含早午餐库。这需要在子模块中安装早午餐npm包。Brunch building运行了一段时间,说它正在编译,但最终我出现了一个“JavaScript堆内存不足”错误。等等,你希望
包.json
在子模块之外,对吗?似乎为了让它工作,
package.json
node\u modules
必须位于子模块文件夹中,因为您无法更改默认的
node\u modules
位置: