Jak mogę zacząć npm w innym katalogu?


292

Zwykle cdwchodzę do katalogu aplikacji, a następnie uruchamiam npm start.

Mam wrażenie, że powinien istnieć sposób na uruchomienie npm startparametru ścieżki. Ale dokumentacja npm start nie zawiera takiej funkcji.

Starałem się tylko, aby znaleźć npm start ./myappnie działa. Czy jest na to sposób?

Odpowiedzi:


473

Ten liner powinien działać:

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

Odpowiedni dokument


18
Nie działa. Próbuję znaleźć pakiet.json w bieżącym katalogu.
Shashwat Kumar 17.04.17

@ShashwatKumar, czy kiedykolwiek znalazłeś skuteczny sposób na zrobienie tego?
Juicy

3
Właśnie przetestowałem, aby uruchomić to polecenie w folderze, który package.jsonrównież ma, a npm poprawnie wykonał polecenie, path/to/your/appaby znaleźć właściwe package.json. Jakiej wersji npm używasz?
Amaury Liet,

3
Działając na macOS10.14.x z węzłem 10.x i npm 6.9.0, jeden-liniowiec działał idealnie. Dziękuję Ci.
Tod

3
Dokumenty --prefixtutaj: docs.npmjs.com/misc/config#prefix
lealceldeiro

88

Poniżej polecenia gdzie projectjest folder zawierający package.jsonplik

npm run --prefix project ${COMMAND}

również działa. Przydatny w aplikacjach opartych na Docker.


21

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

& inside package.json dodaj następujący skrypt

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

6
Czy możesz wyjaśnić, co robi skrypt przedinstalacyjny?
Junvar

To nie jest wieloplatformowe. Działa tylko na Uniksie, a nie na nieparzystych piłkach, takich jak Windows.
Jack Giffin

18

Przybyłem tutaj z Google, więc może to być istotne dla innych: yarnmożesz użyć:

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

6

Ten liner powinien również działać:

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

Zauważ, że bieżący katalog zostanie zmieniony na / path / to / your / app po wykonaniu tego polecenia. Aby zachować katalog roboczy:

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

Użyłem tego rozwiązania, ponieważ edytowany wówczas plik konfiguracyjny programu nie obsługiwał określania argumentów wiersza poleceń.


2
Proszę, używając przycisku „-1”, dodaj komentarz, aby goście mieli wskazówkę „dlaczego to nie jest w porządku” ...
Cyril CHAPON

6
Nie przegłosowałem. Ale wierzę, że jest odrzucony z powodu skutków ubocznych. Rozwiązanie nie jest czyste, zmienia bieżący katalog.
Vladimir Serykh

Jest to w rzeczywistości bardzo powszechne rozwiązanie, jedynym ulepszeniem, które można by zrobić, jest dodanie nawiasu, aby uniknąć wspomnianych skutków ubocznych. Jednak powyższe rozwiązania są lepsze w mojej opcji, ponieważ opierają się wyłącznie na NPM.
Rafał Wrzeszcz

Możesz dodać cd -na końcu, aby usunąć efekt uboczny.
babca

@babca, chyba że npm startzawiedzie ... musisz podzielić to na wiele stwierdzeń
Andreas

2

Na tej liście problemów npm można obejść jedno za pomocą konfiguracji npm

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

Pod oknami scriptsMoże być{ start: "node ./%npm_package_config_path%" }

Następnie uruchom wiersz poleceń jak poniżej

npm start --foo:path=myapp

co skrypt może zrobić dla pobranych pakietów? Załóżmy, że chcę uzyskać dostęp do pliku js z pobranego pakietu npm
Hardik Rana
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.