2016-05-18 2 views
0

Я хочу, чтобы запустить НПЕ run скрипт, расположенный в хранилище из хранилища B (оба клонировали локально).запустить НПЙ скрипт из другого хранилища

В хранилище A сценарий определяется как это в package.json:

"scripts": { 
    "my-script": "node my-script.js" 
} 

... и это запускается с npm run my-script. Он отлично работает при запуске без ошибок. Скрипт компилирует некоторые файлы и копирует их в разные папки внутри репо A.

Итак, моя первая мысль, чтобы иметь возможность запускать этот процесс из репозитория B было просто позвонить node my-script.js из числа npm.

"scripts": { 
    "my-script-in-other-repo": "node ../path/to/repo/my-script.js" 
} 

... и назвать его npm run my-script-in-other-repo в хранилище B.

К сожалению, этот подход бросает кучу ошибок Node и NPM, которые не помогают решить эту проблему. Такие вещи, как Make sure you have the latest version of node.js and npm installed.. Here is the output.

Моя интуиция подсказывает мне, что это может быть проблема с контекстом узла, или, возможно, узел в хранилище В не может получить доступ к пакеты Дев в хранилище .

быстрый и грязный раствор может повторить my-script.js в хранилище B изменения пути к файлам и копируя те же зависимости ... но это своего рода уродливый.

Есть ли более чистый способ решить эту проблему?

+1

1. Возможно, вы рассмотрели бесполезную часть сообщения об ошибке. Можете ли вы показать нам вывод дословно? 2. Вы контролируете ** B **? Если да, вы можете сделать «my-script.js» «двоичным» и запустить его как зависимость dev. 3. Небольшая nitpick: npm не является аббревиатурой, просто держите ее в нижнем регистре. ;) –

+0

Эй @ E_net4 Я отредактировал мой вопрос. Да, я контролирую оба РЕПО. – Pier

+0

Фактическая ошибка лежит перед сообщением об ошибке npm и вызвана 'npm run bundle-css && npm run build-js && npm run build-js-dependencies && npm run sync-repos && npm run bundle-css-XXXXXXXXXXXXX'. Вы можете посмотреть на это. –

ответ

2

Вы, кажется, ваш проект как зависимость B, и что у вас есть скрипты в , которые предназначены для исполнения непосредственно в качестве независимого applications.Luckily, есть безболезненный способ в НОМ регистрировать такие скрипты и запускать их от иждивенцев.

В проекте , используйте "bin" property in package.json, чтобы сохранить ваши исполняемые скрипты:

"bin": { 
    "A-script": "my-script.js" 
}, 

В проекте B, держать как зависимость (или devDependency, в зависимости от того, когда вам это нужно) , а затем запустить A-script, как если бы это была команда:

"scripts": { 
    "my-script-in-other-repo": "A-script" 
} 

Однако обратите внимание, что, хотя модуль г esolution все еще работает при запуске скриптов из внешнего рабочего каталога, разрешая другие виды ресурсов с использованием fs, зависит от текущего рабочего каталога.Согласно docs regarding fs operations:

The relative path to a filename can be used. Remember, however, that this path will be relative to process.cwd() .

Если вам необходимо загрузить файл ресурсов (например, файл CSS), проживающий в каком-то месте относительно исходного кода, следует использовать глобальную переменную __dirname для разрешения на этот файл , Это могло бы стать причиной вашей проблемы.

Смежные вопросы