如何npm从不同的目录开始

Bla*_*ise 234 node.js

我经常cd进入app目录然后运行npm start.

我觉得应该有一些方法来运行npm start路径参数.但是,npm start文档不包含此类功能.

我试过自己只发现npm start ./myapp不起作用.有没有办法做到这一点?

Ama*_*iet 377

这个单线应该工作:

npm start --prefix path/to/your/app
Run Code Online (Sandbox Code Playgroud)

  • 不工作.试图在当前目录中找到package.json. (15认同)
  • 此处的“--prefix”文档:https://docs.npmjs.com/misc/config#prefix (7认同)
  • 在 macOS10.14.x 和 node 10.x 和 npm 6.9.0 上运行,单线运行完美。谢谢你。 (4认同)
  • 我刚刚测试过在也带有package.json的文件夹中运行此命令,npm正确地遵循path / to / your / app的路径来找到正确的package.json。您正在使用哪个版本的npm? (2认同)

iti*_*iic 66

在Command下面,project是一个包含package.json文件的文件夹

npm run --prefix project dev
Run Code Online (Sandbox Code Playgroud)

工作正常.在docker base应用程序中很有用.

  • 这是对我最有帮助的答案,因为它记录了您需要在前缀标志和路径*之后*传递命令。“npm start --prefix path/to/your/app”的示例是一种边缘情况,因为 npm 允许您使用“npm start”或“npm test”作为“npm run start/test”的简写”。如果有人需要运行启动或测试以外的命令,那么该示例没有帮助。 (3认同)

小智 19

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

&inside package.json添加以下脚本

"scripts": {
   "preinstall":"cd $(pwd)"
}
Run Code Online (Sandbox Code Playgroud)

  • 您能解释一下预安装脚本的作用吗? (7认同)
  • 这不是跨平台的。它只适用于 Unix,不适用于 Windows 等奇怪的系统。 (4认同)

bab*_*bca 14

这个单行也应该工作:

(cd /path/to/your/app && npm start)
Run Code Online (Sandbox Code Playgroud)

请注意,执行此命令后,当前目录将更改为 /path/to/your/app。要保留工作目录:

(cd /path/to/your/app && npm start && cd -)
Run Code Online (Sandbox Code Playgroud)

我使用这个解决方案是因为我当时正在编辑的程序配置文件不支持指定命令行参数。

  • 我没有投反对票。但我相信由于副作用,它被否决了。解决方案不纯,它改变了当前目录。 (9认同)
  • 请在使用“-1”按钮时添加评论,以便访问者了解“为什么不可以”... (4认同)
  • @babca除非`npm start`失败...你需要将其分成多个语句 (4认同)

Or *_*uan 13

我是从谷歌来到这里的,所以它可能与其他人有关:因为yarn你可以使用:

yarn --cwd /path/to/your/app run start 
Run Code Online (Sandbox Code Playgroud)


zan*_*ngw 4

根据此npm 问题列表,可以通过 npm config 完成一种解决方法

name: 'foo'
config: { path: "baz" },
scripts: { start: "node ./$npm_package_config_path" }
Run Code Online (Sandbox Code Playgroud)

在windows下,scripts可能是{ start: "node ./%npm_package_config_path%" }

然后运行命令行如下

npm start --foo:path=myapp
Run Code Online (Sandbox Code Playgroud)