【问题标题】:Using a task runner without package.json使用没有 package.json 的任务运行器
【发布时间】:2015-01-02 17:25:12
【问题描述】:

我正在评估任务运行程序,特别是 Grunt 和 Gulp,但我不喜欢他们两个的一点:他们需要一个 package.json 文件用于您的项目。即使您的项目一开始可能甚至不是 npm 项目,也是如此。在我的例子中,我已经在使用composer.json,它基本上做同样的事情。

我最终像这样创建了我的package.json

{
  "name": "myproject",
  "version": "0.0.0",
  "devDependencies": {
    "grunt": "~0.4.5",
    "grunt-phpcs": "~0.2.3",
    "grunt-phplint": "0.0.5",
    "grunt-phpdocumentor": "~0.4.1"
  }
}

请注意,我没有维护版本号,因为这是不必要的开销。不过,这可行,因为我可以在执行npm install 后运行我的 grunt 任务。我觉得我应该可以不用这个文件。我读到可以在没有package.json 的情况下使用 Grunt,但我认为您必须手动安装节点模块,这会增加开销。 Gulp 也不例外,或者至少我没有发现相反的证据。

所以问题是,是否有任何任务运行器不需要您定义项目的元数据两次,只需要一个文件,并且不是前沿?

【问题讨论】:

  • Grunt 是一个节点模块,它具有由npm 管理的依赖项,因此是的,您必须有一个package.json 文件。如果没有某种包管理文件,Grunt(或 Gulp)将无法导入其依赖项,为此他们选择使用 npm。如果您要针对不同的任务运行程序寻求建议,那么 StackOverflow 确实不是这样。
  • @jakerella 拥有package.json 文件不是必须的。是的,它可以使用npm 作为安装依赖项的后端,但这并不一定需要package.json 文件。 grunt CLI 工具可能有一些从 Gruntfile 中获取需求的逻辑,添加 0.0.0 版本并运行 npm install。事实上,已经有一些包做了类似的事情:stackoverflow.com/questions/15143173/…
  • 虽然在技术上是正确的,但这很快就会变得很麻烦,因为您必须自己维护所有包,包括知道何时有更新。事实上,这就是 Grunt 期望并建议您使用该工具的方式。
  • @jakerella 一点也不。你似乎没有理解我的建议。我刚刚发现 BLDR 完全符合我的描述,只是它基于 PHP 并使用 composer 作为包管理后端。

标签: gruntjs build-automation


【解决方案1】:

回答我自己,我能找到的唯一符合我要求的就是bldr。它基于 PHP,使用 composer 作为包管理后端,并且不会劫持您可能已经在使用的composer.json,因为它使用bldr.json。它也不需要您将元数据添加到描述您的 bldr 依赖项的文件中。这是一个示例依赖文件(取自http://docs.bldr.io/en/latest/blocks.html):

{
    "require": {
        "acme/demo-block": "@stable"
    }
}

然后,当您运行 bldr install 时,您的依赖项已安装,您可以运行您的 bldr 任务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-17
    • 1970-01-01
    • 2016-12-13
    • 2022-01-25
    • 2015-03-12
    • 2018-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多