Как я могу запустить npm в другом каталоге?


293

Я обычно cdв каталог приложений, а затем запустить npm start.

Я чувствую, что должен быть какой-то способ работать npm startс параметром пути. Но в стартовой документации npm такой функции нет.

Я попробовал только найти npm start ./myappне работает. Есть ли способ сделать это?

Ответы:


475

Этот однострочник должен работать:

npm start --prefix path/to/your/app

Соответствующий документ


18
Не работает. Попытка найти package.json в текущем каталоге.
Шашват Кумар

@ShashwatKumar, вы когда-нибудь находили рабочий способ сделать это?
Сочный

3
Я только что проверил, чтобы запустить эту команду в папке, имеющей package.jsonтакже, и npm правильно следовал за, path/to/your/appчтобы найти правильное package.json. Какую версию npm вы используете?
Amaury Liet

3
Работая на macOS10.14.x с узлом 10.x и npm 6.9.0, однострочник работал отлично. Спасибо.
Тод

3
Документы для --prefixздесь: docs.npmjs.com/misc/config#prefix
lealceldeiro

88

Ниже команды где projectнаходится папка с package.jsonфайлом

npm run --prefix project ${COMMAND}

тоже работает. Полезно в приложениях на основе Docker.


21

npm start --prefix path/to/your/app

& inside package.json добавить следующий скрипт

"scripts": {
   "preinstall":"cd $(pwd)"
}

6
Можете ли вы объяснить, что делает скрипт предустановки?
junvar

Это не кроссплатформенность. Это работает только на Unix, а не на странных шарах, таких как Windows.
Джек Гиффин

18

Я пришел сюда из Google, так что это может быть актуально для других: для yarn вы можете использовать:

yarn --cwd /path/to/your/app run start 

6

Этот однострочный тоже должен работать:

(cd /path/to/your/app && npm start)

Обратите внимание, что текущий каталог будет изменен на / path / to / your / app после выполнения этой команды. Чтобы сохранить рабочий каталог:

(cd /path/to/your/app && npm start && cd -)

Я использовал это решение, потому что файл конфигурации программы, который я редактировал тогда, не поддерживал указание аргументов командной строки.


2
Пожалуйста, при использовании кнопки «-1» добавьте комментарий, чтобы посетители могли понять, «почему это не хорошо» ...
Кирилл ЧАПОН

6
Я не понизил. Но я считаю, что это отрицательно из-за побочных эффектов. Решение не чисто, оно меняет текущий каталог.
Владимир Серых

На самом деле это очень распространенное решение, единственное улучшение, которое будет сделано, это добавить скобки, чтобы избежать упомянутых побочных эффектов. Однако решения, представленные выше, лучше по моему мнению, поскольку они основаны исключительно на NPM.
Rafał

Вы можете добавить cd -в конце, чтобы удалить побочный эффект.
Babca

@babca, если npm startне получится ... нужно разбить это на несколько утверждений
Андреас

2

В соответствии с этим списком проблем npm , один обходной путь может быть выполнен через конфигурацию npm

name: 'foo'
config: { path: "baz" },
scripts: { start: "node ./$npm_package_config_path" }

Под окнами scriptsможет быть{ start: "node ./%npm_package_config_path%" }

Затем запустите командную строку, как показано ниже

npm start --foo:path=myapp

какой скрипт может сделать для скачанных пакетов? Предположим, я хочу получить доступ к js-файлу из загруженного пакета npm
Hardik Rana
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.