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