¿Cómo puedo obtener npm start en un directorio diferente?

292

Por lo general, cden el directorio de la aplicación y luego ejecuto npm start.

Tengo la sensación de que debería haber alguna forma de ejecutar npm startcon un parámetro de ruta. Pero, la documentación de inicio de npm no contiene tal característica.

Lo intenté solo para encontrar npm start ./myappque no funciona. ¿Hay una manera de hacer eso?

Blaise
fuente

Respuestas:

473

Esta frase debería funcionar:

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

Documento correspondiente

Amaury Liet
fuente
18
No funciona. Intentando encontrar package.json en el directorio actual.
Shashwat Kumar
@ShashwatKumar, ¿alguna vez encontraste una manera de hacer esto?
Jugoso
3
Acabo de probar para ejecutar este comando en una carpeta que package.jsontambién tiene, y npm siguió correctamente path/to/your/apppara encontrar el correcto package.json. ¿Qué versión de npm estás usando?
Amaury Liet
3
Al ejecutarse en macOS10.14.x con el nodo 10.xy npm 6.9.0, el one-liner funcionó perfectamente. Gracias.
Tod
3
Documentos por --prefixaquí: docs.npmjs.com/misc/config#prefix
lealceldeiro
88

Debajo del comando donde projecthay una carpeta que contiene el package.jsonarchivo

npm run --prefix project ${COMMAND}

también está funcionando Útil en aplicaciones basadas en Docker.

itiic
fuente
21

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

& inside package.json agrega el siguiente script

"scripts": {
   "preinstall":"cd $(pwd)"
}
Rafael17
fuente
66
¿Puedes explicar qué hace el script de preinstalación?
junvar
Esto no es multiplataforma. Solo funciona en Unix y no en bolas extrañas como Windows.
Jack Giffin
18

Vine aquí de Google, por lo que podría ser relevante para otros: para yarnque pueda usar:

yarn --cwd /path/to/your/app run start 
O Duan
fuente
6

Esta línea también debería funcionar:

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

Tenga en cuenta que el directorio actual se cambiará a / ruta / a / su / aplicación después de ejecutar este comando. Para preservar el directorio de trabajo:

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

Utilicé esta solución porque un archivo de configuración del programa que estaba editando en ese momento no admitía la especificación de argumentos de línea de comandos.

babca
fuente
2
Cuando use el botón "-1", agregue un comentario para que los visitantes tengan una pista de "por qué no está bien" ...
Cyril CHAPON
66
No voté en contra. Pero creo que se ha rechazado debido a los efectos secundarios. La solución no es pura, cambia el directorio actual.
Vladimir Serykh
Esta es realmente una solución muy común, la única mejora que se haría sería agregar paréntesis para evitar los efectos secundarios mencionados. Sin embargo, las soluciones anteriores son mejores en mi opinión, ya que se basan exclusivamente en NPM.
Rafał Wrzeszcz
Puede agregar cd -al final para eliminar el efecto secundario.
babca
@babca a menos que npm startfalle ... necesita dividir eso en varias declaraciones
Andreas
2

Según esta lista de problemas de npm , se puede hacer una solución a través de npm config

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

Debajo de las ventanas, el scriptspodría ser{ start: "node ./%npm_package_config_path%" }

Luego ejecute la línea de comando como se muestra a continuación

npm start --foo:path=myapp
zangw
fuente
¿Qué script podría hacer por los paquetes descargados? Supongamos que quiero acceder al archivo js desde el paquete npm descargado
Hardik Rana