Пользуюсь сборщиком enb, в enb-make определил две сборки, production и development, вот так:
config.mode("production", function () {...
в зависимости от режима определяю уровень переопределения env:
config.mode("production", function () {
config.node("bundles/proj", function (nodeConfig) {
nodeConfig.addTechs([
[ require("enb-bem-techs/techs/levels"), {levels: getLevels([{"path": "blocks/env/production", "check": false}])} ],...
Функция getLevels:
function getLevels(levels) {
levels = levels || [];
return levels.concat[
{"path": "libs/bem-core/common.blocks", "check": false},
{"path": "lib.modules", "check": false},
{"path": "blocks/translation.blocks", "check": false},
{"path": "blocks/common.blocks", "check": true},
].map(function (l) { return config.resolvePath(l); });
}
Для development
естественно путь указан к папке development
В проекте все так лежит:
blocks/env/production/env.js
и blocks/env/development/env.js,
Содержимое файлов: modules.define('env', [], provide => { provide('development') });
(или production, в зависимости от файла).
В компоненте, для которого есть разница между development
и production
режимами подключаю env
, и уже от него пляшу
При сборке YENV=production enb-make -n
сборщик все-равно подключает /development/env.js
, мало того, удаление всей папки env/development
приводит к тому что в продакшн моде все-равно подключается development
файл. С другой стороны, после того как файл env/development/env.js
оказывается недоступным во время development
сборки (enb make -n)
сборщик ругается на отсутствие файла/папки. В чем проблема, и как еще можно из компонента получить доступ к переменной YENV
?
Схема расположения файлов на FS какая-то странная. Ожидается, что будет
level/block-name/block-name.js
, т.е. в данном случаеdevelopment.blocks/env/env.js
иproduction.blocks/env/env.js
. Странно, что в описанной схеме хоть что-то попадает в сборку.В остальном ход мысли верный.
Если есть всего 2 варианта окружения, я бы предложил оставить только
development.blocks
, а по умолчанию считать, что этоproduction
-окружение.Как альтернативный вариант могу предложить заиспользовать https://github.com/tadatuta/enb-define