首页 文章

任务运行者(Gulp,Grunt等)和Bundlers(Webpack,Browserify) . 为什么一起使用?

提问于
浏览
100

我对任务运行器和捆绑器世界有点新鲜,并且经历了类似的事情

Grunt,Gulp,Webpack,Browserify

,我觉得他们之间没有太大区别 . 换句话说,我觉得Webpack可以完成任务运行器所做的一切 . 但是我仍然有一个巨大的例子,其中gulp和webpack一起使用 . 我无法弄清楚原因 .

对此我不熟悉,我可能会把事情弄错 . 如果你能指出我所缺少的东西,那就太好了 . 欢迎任何有用的链接 .

提前致谢 .

1 回答

  • 208

    GruntGulp实际上是任务运行者,他们有不同的配置驱动任务和基于流的转换 . 每个都有自己的优点和缺点,但在一天结束时,它们几乎可以帮助您创建可以运行的任务来解决更大的构建问题 . 大多数情况下,它们与应用程序的实际运行时间无关,而是转换或者将文件,配置和其他内容放在适当的位置,以便运行时按预期工作 . 有时,它们甚至会产生运行应用程序所需的服务器或其他进程 .

    WebpackBrowserify是包捆绑包 . 基本上,它们旨在运行所有包的依赖关系,并将它们的源连接到一个文件中(理想情况下)可以在浏览器中使用 . 它们对于现代Web开发很重要,因为我们使用了许多设计用于运行Node.jsv8编译器的库 . 同样,有一些开发人员更喜欢其中一个(或有时两者都有)的优点和缺点以及不同的原因 . 通常,这些解决方案的输出包包含某种引导机制,可帮助您在潜在的庞大包中找到正确的文件或模块 .

    跑步者和捆绑者之间模糊的界限可能是捆绑者也可以在他们的运行时进行复杂的转换或trans-pilations,因此他们可以做任务跑步者可以做的几件事 . 实际上,在browserify和webpack之间可能有大约一百个transformers,您可以使用它来修改源代码 . 相比之下,npm目前至少列出了2000个gulp插件 . 所以你可以看到有明确的(希望......))定义最适合你的应用程序 .

    话虽这么说,您可能会看到一个复杂的项目实际上同时或串联使用任务运行器和包捆绑器 . 例如,在我的办公室,我们使用gulp来启动我们的项目,而webpack实际上是从特定的gulp任务运行的,该任务创建了我们在浏览器中运行应用程序所需的源包 . 因为我们的应用程序是isomorphic,我们也是bundle some of the server代码 .

    在我看来,您可能希望熟悉所有这些技术,因为您可能会在职业生涯中看到(使用)所有这些技术 .

相关问题