我怎样才能让 npm start 在不同的目录?
Posted
技术标签:
【中文标题】我怎样才能让 npm start 在不同的目录?【英文标题】:How can I get npm start at a different directory? 【发布时间】:2016-07-10 09:44:22 【问题描述】:我一般cd
进入app目录然后运行npm start
。
我觉得应该有一些方法可以使用路径参数运行npm start
。但是,npm start documentation 不包含这样的功能。
我自己试了才发现npm start ./myapp
不起作用。有没有办法做到这一点?
【问题讨论】:
【参考方案1】:这个单行应该可以工作:
npm start --prefix path/to/your/app
Corresponding doc
【讨论】:
不工作。试图在当前目录中找到 package.json。 @ShashwatKumar 你有没有找到一种可行的方法? 我刚刚测试了在具有package.json
的文件夹中运行此命令,npm 正确地跟随path/to/your/app
找到正确的package.json
。您使用的是哪个版本的 npm?
在带有节点 10.x 和 npm 6.9.0 的 macOS10.14.x 上运行,单线运行完美。谢谢。
--prefix
的文档:docs.npmjs.com/misc/config#prefix【参考方案2】:
下面的命令,其中project
是一个包含package.json
文件的文件夹
npm run --prefix project $COMMAND
也能正常工作。 在基于 Docker 的应用程序中很有用。
【讨论】:
这对我来说是最有帮助的答案,因为它记录了您需要在 前缀标志和路径之后传递命令。 “npm start --prefix path/to/your/app”的示例是一个边缘案例,因为 npm 允许您使用“npm start”或“npm test”作为“npm run start/test”的简写”。如果有人需要运行除 start 或 test 之外的命令,该示例将无济于事。【参考方案3】:这个单线也应该工作:
(cd /path/to/your/app && npm start)
请注意,执行此命令后,当前目录将更改为 /path/to/your/app。保留工作目录:
(cd /path/to/your/app && npm start && cd -)
我使用此解决方案是因为我当时正在编辑的程序配置文件不支持指定命令行参数。
【讨论】:
请在使用“-1”按钮时添加评论,以便访问者知道“为什么不正常”... 我没有投反对票。但我相信由于副作用,它被否决了。解决方案不纯,它改变了当前目录。 这实际上是一个非常常见的解决方案,唯一的改进是添加括号以避免提到的副作用。然而,我认为上述解决方案更好,因为它们完全依赖于 NPM。 你可以在末尾加上cd -
来消除副作用。
@babca 除非npm start
失败...您需要将其分解为多个语句【参考方案4】:
我从谷歌来到这里,所以它可能与其他人有关:
对于yarn
,您可以使用:
yarn --cwd /path/to/your/app run start
【讨论】:
【参考方案5】:npm start --prefix path/to/your/app
&在package.json里面添加如下脚本
"scripts":
"preinstall":"cd $(pwd)"
【讨论】:
您能解释一下预安装脚本的作用吗? 这不是跨平台的。它只适用于 Unix,而不适用于像 Windows 这样的奇怪的球。【参考方案6】:根据npm issue list,可以通过 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 文件以上是关于我怎样才能让 npm start 在不同的目录?的主要内容,如果未能解决你的问题,请参考以下文章
当我使用storm trident时,如果我将并行度设置为不小于2,我怎样才能让所有的执行器运行在不同的服务器上,而不仅仅是一台服务器上?