Вот тут ожидается ошибка в случае если нет файла https://github.com/enb-make/enb/blob/master/techs/file-provider.js#L46
А что, если добавить проверку на параметр content
и если оный имеется, то создать файл ну как-то так:
build: function () {
var promise;
var target;
var targetPath;
var _this = this;
promise = Vow.promise();
target = this.node.unmaskTargetName(this._target);
targetPath = this.node.resolvePath(target);
fs.exists(targetPath, function (exists) {
if (exists) {
_this.node.resolveTarget(target);
} else {
if (_this._content === undefined) {
_this.node.rejectTarget(target, new Error('File not found: ' + targetPath));
} else {
fs.writeFile(targetPath, _this._content, _this._options || {}, function (error) {
if (error) {
_this.node.rejectTarget(target, error);
return;
}
_this.node.resolveTarget(target);
});
}
}
return promise.fulfill();
});
return promise;
},
Чего скажете? Полезно будет али нет?
Ну или так
А потом можно делать нечто такое:
Бац бац и вот само все собирается
@pavelpower вроде может быть полезно. Если оформишь такую технологию как npm-пакет, предлагаю положить в bem-incubator.
@tadatuta, уже у себя в проекте заюзал, такой генератор.
назвал так же
file-provider
и вместо основного подключил.Есть идеи как назвать для bem-incubator, чтобы по правослвному?
enb-virtual-file-provider
?virtual - как-то точно не то. Может так и обозвать
file-provider
? Или завпдейтить существующий?файла на FS нет, а он провайдится. почему virtual не подходит?
@tadatuta потому, что я его задаю через content, причем или строкой или буфером.
Идея годная.
Я бы разделил 2 разных кейса:
provide-data
— предоставить данныеПо такой логике текущий провайдер логично назвать
read-file
.@blond с
write-file
- мне нравитсяа вот
provide-data
он конкретно подexports
заточен?Не знаю насколько это нужно, но технологии могут получать на вход данные не только из других файлов, но и из памяти.
provide-data
мог бы предоставлять данные в память и ничего не записывать в файл.буду вот тут реализовывать https://github.com/pavelpower/enb-write-file
@blond поревьювишь?
@blond я там смотр на примеры тестов в enb - есть одна проблема мало доков как кошерно писать под
mock-enb/lib/mock-node
может дашь урок?@tadatuta может и ты сможешь помочь с этим.
см. https://github.com/pavelpower/enb-write-file/blob/master/test/techs/write-file.test.js
А вы разве не в enb это хотели сделать? Кажется, что это прям базовые вещи
@zxqfox ??? ну как бы да. Может я не так понял. Сказали - сделай, делаю.
Т.е. предполагалось в форке enb?
Судя по
— да ;-)
Согласен, это примерно тоже самое что и технологии, которые сейчас в ENB.
@zxqfox @blond все, прям исправляюсь, сейчас форкну и начну
Добавил Issue: https://github.com/enb-make/enb/issues/425
@blonde запускаю
npm run tech-test
получаю нечто странноеПосмотрел откуда ноги растут:
/Projects/opensource/enb/node_modules/mock-enb/lib/mock-node.js
Как это enb сам в себя для dev устанавливаете?
хм, проблема в том, что у
mock-node
enb
в зависимостях только в dev. А в сам enb ставиться без него же.Логично, но как у вас то работает?
Прокидываете симлинку?
@blond пока решил так
cd node_modules/mock-enb && npm i
;Но это не true
А какая версия
node
иnvm
?@blond
он не читает файл, а проверяет его наличие:
Кажется, что это проблема с
mock-enb
из-заnpm
.Возможно надо просто явно прописать зависимость от
enb
, но я пока не уверен, что это правильно.Аргумент :)