Запустите бранч из другого каталога и используйте относительные пути
Мы хотим использовать одну и ту же систему сборки для нескольких проектов. У меня есть файл конфигурации рабочего бранча, который я хочу добавить в подмодуль 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
конфигурации Brunch, как он сейчас стоит, без какой-либо попытки относительного пути:
files: {
javascripts: {
joinTo: {
'js/lib.js': /^(?!source\/)/
},
entryPoints: {
'source/scripts/app.jsx': {
'js/app.js': /^source\//
},
}
},
stylesheets: {joinTo: 'css/core.css'}
}
Как я могу изменить это, чтобы использовать относительный путь с учетом требуемой структуры папок выше? Возможно ли это?
Ответы
Ответ 1
Подмодуль должен быть связан с корневой папкой в родительском репо: это gitlink (a специальная запись в основном индексе репо), который записывает, какой SHA1 выгрузил подмодуль.
В вашем случае было бы лучше, если вы можете использовать post-checkout hook, script, гарантируя, что есть символическая ссылка между:
-
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 скопированного файла
Ответ 2
В общем, бранч поддерживает относительные пути. Но для того, чтобы он работал, вы должны сначала убедиться, что другие папки watched
. См. эту часть в документах. Для вашего случая добавьте это в свою конфигурацию.
paths = {
watched: ['../source', '../node_modules'],
}
Затем добавьте RegExs на ..\/
.
joinTo: {
'js/lib.js': /^..\/(?!source\/)/
},
entryPoints: {
'source/scripts/app.jsx': {
'js/app.js': /^..\/source\//
},
}
Вместо RegEx вы также можете написать функцию, которая принимает путь в качестве аргумента и должна возвращать, должен ли быть включен путь или нет. См. эту часть в документах.