【问题标题】:run script command in specified directory在指定目录运行脚本命令
【发布时间】:2019-02-12 22:05:03
【问题描述】:

我正在设置一个composer.json 文件以在执行时自动运行一些任务。

脚本如下所示:

"scripts": {
  "post-update-cmd": [
    "@createDir",
    "@installSlate",
    "@installConcat"
  ],
  "createDir": "npm install -g @shopify/slate",
  "installSlate": "slate theme blank_theme",
  "installConcat": "npm install grunt-contrib-concat --save-dev"
}

这可行,但它将 grunt 插件安装在根文件夹中,而不是在 blank_theme 中。我试过添加;

"installConcat": "cd blank_theme npm install grunt-contrib-concat --save-dev"

或添加另一个命令以进入blank_theme 目录,例如;

"scripts": {
  "post-update-cmd": [
    "@createDir",
    "@installSlate",
    "@moveDir",
    "@installConcat"
  ],
  "createDir": "npm install -g @shopify/slate",
  "installSlate": "slate theme blank_theme",
  "moveDir": "cd blank_theme",
  "installConcat": "npm install grunt-contrib-concat --save-dev"
}

但没有运气。任何想法如何实现这一目标?

【问题讨论】:

    标签: npm gruntjs composer-php


    【解决方案1】:

    它发生是因为命令:npm install package_name 在当前目录或最近的父目录中安装指定的包,其中存在 package.json 文件。 如果你需要在指定目录安装一些东西,你应该把 package.json 文件放在那里,或者在这个目录下运行 npm init,这将在那里创建这个文件并且一切都会工作。

    作为建议,我可以说:从您的命令中删除 --save-dev。该子命令的供词是将您安装的内容添加到 package.json 作为依赖项。通常我在开发过程中使用此命令,当我懒惰时手动将此依赖项写入 package.json。在你的 composer.json 你在这个子命令中没有必要;

    【讨论】:

      【解决方案2】:

      最后我已经这样解决了,以防它帮助任何人

      "installConcat": "npm install --prefix blank_theme  grunt-contrib-concat --save-dev"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-11
        • 2017-12-07
        • 2015-10-31
        • 2020-08-12
        • 2012-08-27
        • 1970-01-01
        • 2010-09-12
        • 2022-08-15
        相关资源
        最近更新 更多