У меня есть суперпроект, который содержит подпроекты и содержит общие зависимости:
super
node_modules
.bin
foo-binary
foo-binary.exe
foo
sub
node_modules
package.json
package.json
Мне нужно иметь возможность вызывать foo
либо как super
скрипт NPM:
super/package.json
"scripts": {
"foo": "foo-binary" <-- should run with super/sub/ as CWD
}
В этом случае foo-binary
работает с super/
как CWD, а должно работать с super/sub/
. Использование cd
приводит к кроссплатформенным проблемам; cd sub && ..\\node_modules\\.bin\\foo-binary
с обратной косой чертой работает в Windows, но не в ОС *nix, а cd sub && ../node_modules/.bin/foo-binary
с прямой косой чертой в Windows не работает (проверено на Windows 7):
«..» не распознается как внутренняя или внешняя команда, исполняемая программа или пакетный файл
Или мне нужно иметь возможность вызывать foo
как скрипт super
NPM:
super/sub/package.json
"scripts": {
"foo": "../node_modules/.bin/foo-binary"
}
В этом случае пути для конкретных платформ также не работают в Windows.
Есть несколько причин, по которым sub
не может иметь foo
в качестве собственной зависимости, одна из них заключается в том, что все подпроекты должны последовательно использовать одну и ту же версию foo
и не занимать место несколькими копиями foo
.
Как в этом случае задать текущий рабочий каталог, кроссплатформенно и желательно без добавления кастомных скриптов в проект?
\"...\"
. Например:"foo": "cd sub && \"../node_modules/.bin/foo-binary\""
- person RobC   schedule 14.04.2019/
как разделитель, нужны кавычки. - person Estus Flask   schedule 14.04.2019