【发布时间】: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 作为包管理后端。