Como posso obter o npm start em um diretório diferente?


292

Eu costumo cdentrar no diretório do aplicativo e depois corro npm start.

Sinto que deve haver alguma maneira de executar npm startcom um parâmetro de caminho. Porém, a documentação do npm start não contém esse recurso.

Eu tentei-me apenas para encontrar npm start ./myappnão funciona. Existe uma maneira de fazer isso?

Respostas:


473

Este one-liner deve funcionar:

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

Doc correspondente


18
Não está funcionando. Tentando encontrar package.json no diretório atual.
Shashwat Kumar

@ShashwatKumar, você já encontrou uma maneira de fazer isso?
217 Juicy

3
Acabei de testar para executar este comando em uma pasta que tenha um package.jsontambém, e o npm seguiu corretamente o path/to/your/apppara encontrar o caminho certo package.json. Qual versão do npm você está usando?
Amaury Liet

3
Executando no macOS10.14.x com nó 10.xe npm 6.9.0, o one-liner funcionou perfeitamente. Obrigado.
Tod

3
Documentos para --prefixaqui: docs.npmjs.com/misc/config#prefix
lealceldeiro

88

Abaixo de Command, onde projectestá uma pasta que contém o package.jsonarquivo

npm run --prefix project ${COMMAND}

está funcionando também. Útil em aplicativos baseados no Docker.


21

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

& inside package.json adicione o seguinte script

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

6
Você pode explicar o que o script de pré-instalação faz?
junvar

Isso não é multiplataforma. Funciona apenas no Unix e não em situações estranhas como o Windows.
Jack Giffin 14/04

18

Eu vim aqui do google para que seja relevante para os outros: para yarnvocê poder usar:

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

6

Este one-liner também deve funcionar:

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

Observe que o diretório atual será alterado para / path / para / your / app após a execução deste comando. Para preservar o diretório de trabalho:

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

Usei esta solução porque um arquivo de configuração do programa que eu estava editando na época não suportava a especificação de argumentos de linha de comando.


2
Por favor, quando utilizando o botão "-1", adicione um comentário para que os visitantes têm a menor idéia "porque não é ok" ...
Cyril CHAPON

6
Eu não voto negativo. Mas acredito que isso foi prejudicado por causa dos efeitos colaterais. A solução não é pura, altera o diretório atual.
Vladimir Serykh 7/03/19

Esta é realmente uma solução muito comum, a única melhoria que seria feita é adicionar parênteses para evitar os efeitos colaterais mencionados. No entanto, as soluções acima são melhores na minha opção, pois elas dependem puramente do NPM.
Rafał Wrzeszcz

Você pode adicionar cd -no final para remover o efeito colateral.
babca 7/04/19

@babca, a menos que npm startfalhe ... você precisa dividir isso em várias declarações
Andreas

2

Por esta lista de problemas do npm , uma solução alternativa poderia ser feita através da configuração do npm

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

Sob janelas, scriptspode ser{ start: "node ./%npm_package_config_path%" }

Em seguida, execute a linha de comando como abaixo

npm start --foo:path=myapp

que script poderia fazer pelos pacotes baixados? Suponha que eu queira acesso js arquivo do pacote npm baixado
Hardik Rana
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.