Closed azproduction closed 10 years ago
Так. Я сделал ключик для "бинарника" yate
:
yate foo.yate --module-name "foo"
yate foo.yate --module-name "/foo/bar"
Это то, что тебе нужно? Если да, то соберу пакет с новой версией.
Мне это нужно в API.
yateCompile(path, {
moduleName: 'foo'
});
Угу. Я так и думал. Там правда нет никакого API :) Ну ок, ща куда-нибудь проброшу... Надо всю эту хренотень переписать бы... Опции и все вот это.
А что у тебя делает yateCompile
?
Каким моим "API" ты уже сейчас пользуешься?
var yateCompile = require('yate').compile;
function compileWith (path, yr) {
var oldExport = 'yr.register(\'main\', M)';
var newExport = 'yr.register(\'' + path + '\', M)';
var templateCode = yateCompile(path).js.replace(oldExport, newExport);
vm.runInNewContext(templateCode, {
yr: yr
});
}
Ладно. Давай пока попробуем вот так. Я добавил в yate.parse()
, yate.compile()
, yate.run()
вторым параметром опции, которые в случае запуска из командной строки состоят из разобранной командной строки.
В твоем случае туда можно передать что-то типа того:
var templateCode = yateCompile( path, { 'module-name': path } ).js
/cc @alexeyten
Леш, а ты нигде явно не использовал у себя yate.compile
, yate.run
, yate.parse
?
А то я там сигнатуру yate.run
поменял.
0.0.72
У меня вроде нет. Надо спросить у @doochik и @vitkarpov
я использую, учту при обновлении
А ты прям yate.run
используешь?! Оно же такое, отладочное...
Если нет, то можешь ничего и не делать. Параметр опциональный для yate.compile
и yate.parse
.
Есть несколько причин по которым можно не хотеть писать имя модуля в начале файла:
Хочется, чтобы была возможность указать имя модуля во время компиляции. На данный момент костыляется вот так:
Полный путь, в качестве имени модуля, так же удобен при использовании интерфейса шаблонизатора express. Не нужно из path выкусывать имя модуля.