У меня есть супер-проект, который содержит подпроекты и содержит общие зависимости:
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
копиями.
Как в этом случае можно установить текущий рабочий каталог, перекрестноплатформу и желательно без добавления пользовательских скриптов в проект?