如何让npm从其他目录开始?


290

我通常cd进入app目录,然后运行npm start

我的感觉是应该使用某种方式npm start使用path参数运行。但是,npm start文档不包含此类功能。

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

Answers:


469

这种单线工作:

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

对应文件


18
不工作 尝试在当前目录中找到package.json。
Shashwat Kumar

@ShashwatKumar您是否找到了可行的方法?
多汁

3
我刚刚测试过在也有一个文件夹中运行此命令package.json,并且npm正确地跟随path/to/your/app来找到正确的文件夹package.json。您正在使用哪个版本的npm?
阿莫里·利特(Aaury Liet)'18年

3
在带有节点10.x和npm 6.9.0的macOS10.14.x上运行,单线运行完美。谢谢。
托德

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

&在package.json内添加以下脚本

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

6
您能解释一下预安装脚本的作用吗?
junvar

这不是跨平台的。它仅适用于Unix,不适用于Windows等奇数球。
Jack Giffin

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”按钮时添加评论,以使访客有一个提示“为什么不行” ...
Cyril CHAPON

6
我没有投票。但我认为,由于副作用,这种药物被低估了。解决方案不是纯粹的,它会更改当前目录。
弗拉基米尔·塞里克(Fladimir Serykh),

这实际上是一个非常常见的解决方案,唯一可以做的改进就是添加括号以避免出现上述副作用。但是,上述解决方案在我看来更好,因为它们完全依赖于NPM。
拉斐尔·沃泽斯奇

您可以cd -在末尾添加以消除副作用。
babca

@babca,除非npm start失败...您需要将其分解为多个语句
Andreas

2

根据此npm问题列表,可以通过npm config进行一项解决

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

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

然后如下运行命令行

npm start --foo:path=myapp

下载的软件包可以使用什么脚本?假设我想从下载的npm软件包中访问js文件
Hardik Rana
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.