在指定目录中运行脚本命令

时间:2018-02-08 13:11:09

标签: npm gruntjs composer-php

我设置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"
}

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

我最终解决了这个问题,万一它可以帮助任何人

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