【问题标题】:npm script command to run a script command from another package.jsonnpm script 命令从另一个 package.json 运行脚本命令
【发布时间】:2016-01-10 21:16:36
【问题描述】:

我有两个使用 npm 的独立项目 - 所以我有两个:
some_base_folder/projectA/package.jsonsome_base_folder/projectB/package.json

每个文件都有一个scripts 部分。

如果我转到some_base_folder/projectA/ 并运行npm run-script test,它会从some_base_folder/projectA/package.json 的脚本部分执行测试命令。

我可以在some_base_folder/projectB/package.json 中输入"scripts": {test_projectA:'????' 的值,这样当我在some_base_folder/projectB/ 并运行npm run-script test_projectA 时,它将是 执行Project A的test脚本?

我试过../projectA/npm run-script test 但它说:

'..' is not recognized as an internal or external command,
operable program or batch file.

我在 Windows 7 下运行,但更喜欢在 linux 上也能正常工作的解决方案。

【问题讨论】:

    标签: npm


    【解决方案1】:

    其实很简单:

    "scripts": {
      test_projectA:"cd ../projectA && npm run-script test"
    }
    

    【讨论】:

    • 似乎没有显示来自我的子进程的日志语句。关于如何做到这一点的任何想法?
    • 你可以使用--loglevel verbose
    • 另见@yellowsir 对跨包管理器解决方案的回答(也适用于纱线)。
    【解决方案2】:

    你应该使用--prefix

    npm run [command] --prefix path/to/your/other/folder
    

    对于纱线:

    yarn --cwd path/to/your/other/folder [command]
    

    【讨论】:

    • OP 正在尝试从 package.json 内而不是从命令行运行它
    • @MohamedMoselhy 没有什么能阻止您将这些命令放入 package.json 脚本部分
    【解决方案3】:

    我最终使用了:

    "scripts": {
       "job": "cd ./sub && \"$npm_execpath\" run subjob",
       ...
    }
    

    因为这也适用于 yarn

    【讨论】:

    • 这对我来说是对我投票率最高的答案的重大改进。凭借最高票数的答案,我收到了一些关于 bcrypt 库版本冲突的错误(我认为是因为我使用的是运行命令的 NPM 库,以在另一个文件夹中运行命令......而不是它自己的)。通过使用此答案中所示的环境变量,它修复了该问题。恕我直言,您应该接受这个答案。
    • 是的!谢谢你!我正在使用 yarn,但我不想将 yarn 命令硬编码到我的 package.json 中,效果很好。
    • 遗憾的是,这不再起作用,因为 yarn 将“按原样”转发参数,因此 npm run foo -- -baryarn run foo -- -bar 具有不同的含义
    猜你喜欢
    • 2018-08-18
    • 2016-01-14
    • 2021-07-22
    • 2022-01-24
    • 1970-01-01
    • 2018-03-31
    • 2018-08-02
    • 2020-05-10
    • 1970-01-01
    相关资源
    最近更新 更多