自定义任务运行器与 gulp、grunt、Webpack、npm CLI 脚本

Custom Task Runner vs gulp, grunt, Webpack, npm CLI scripts

我想联系其他有经验的网络开发人员,听取您对如何最好地处理 compiling/building 网络应用程序的意见。

一些背景知识。很久以前我就开始使用 grunt 和 browserfy 捆绑我的应用程序。主要只是 JS 端来捆绑依赖项。我还在使用正常的 css 和 html.

然后 Gulp 似乎是流行的任务运行程序,所以我在新项目中切换到它。我更喜欢 Grunt,但似乎 Gulp 最常用。

然后是Webpack。一开始是多么痛苦啊。众所周知,它不一定是一个任务运行器,更像是一个打包器,但人们用它来做一些我认为它最初并不打算做的事情。

最后,可能与 Webpack 结合,调用命令行任务的简单 npm 脚本。

最终我的设置变得相当复杂,只是使用 Webpack 并没有削减它,所以我制作了自己的自定义 javascript 任务运行器,并且仍然导入了 Webpack、fs-extra、image magik、node 等包-sass 等。使用 api 进行所有图像优化、文件移动、i18n 等

现在,与其用我自己的自定义任务运行器包装所有这些包,不如回到 grunt 或 gulp...顺便说一句,仅使用 npm 脚本并从命令行调用任务是太通用了,我需要更多的定制。

现在我想知道你们是做什么的。那些也与各种任务运行器、复杂的 Webpack 设置等进行过交流的人。你是否:推出自己的自定义任务运行器,仅依赖调用 cli 任务的 NPM 脚本,使用大量嵌套的 Webpack 脚本,grunt,gulp,……还有什么?

老实说,到现在(2020 年)我认为 gulp 或 grunt 会逐渐消失,但事实似乎并非如此。也许我是少数人,有一个自定义任务运行器用于更复杂的构建(对于简单构建,npm 脚本 cli 进程),我应该回到 Gulp 或 Grunt...

如果您对稍微复杂的构建过程所选择的方法提出意见,我将不胜感激。谢谢

每当我选择工具时,我通常有两个主要考虑因素:

  • 在可预见的未来,该工具能为我节省多少time/effort/headache
  • 学习此工具需要多少time/effort/headache前期准备

对于复杂的构建,Gulp 为我节省了很多 time/effort/headache,并且只需要很少的前期工作。很简单的js工具,公司任何人都可以轻松学习和使用。如您所知,它可以(几乎)完成构建复杂项目所需的任何事情。

我在 "how much will the tool save me in future" 中考虑的一个因素是,尤其是在 javascript 的快节奏世界中,我认为该工具将由其所有者维护多长时间。 Gulp 团队正在提供企业支持,积极维护项目,每周有超过 120 万次下载,所以在我看来,我认为他们会存在一段时间。当然,时间足够长,我们从该工具中获得的价值将超过我们为学习它付出的汗水。

对于复杂的构建,根据我的经验,Webpack 需要更多的前期工作。 NPM 脚本需要对 gulp 抽象得很好的东西进行更多的修改。在我简单的前期工作与长期价值计算中,Gulp 赢得了复杂的构建竞赛。