Webpack工作流程有效地分割供应商和应用程序代码

时间:2014-12-21 18:44:10

标签: javascript npm workflow gulp webpack

我无法找到足够的Webpack文档和示例来为我的情况找出理想的开发工作流程。以下是使工作流程理想的所有功能:

  1. 最好通过Gulp观察高效的缓存。 (不要以为我需要更换模块,并怀疑它可能不适合我的开发环境。)

  2. 供应商模块(现在我只有npm软件包,并不是所有软件包都在主文件中公开UMD全局文件,如果它归结为那些)

    一个。没有解析&在观察期间重新编译(因此重新编译更快),

    湾不接收源图(因此浏览器devtools响应速度更快),

    ℃。写入一个独特的vendor.js捆绑包,浏览器可以与应用捆绑包分开缓存。

  3. 的应用模块

    一个。明确所有依赖关系(即import React from 'react';,即使React实际上是全局公开的,也可以通过#2),

    在观看期间重新编译,

    ℃。 执行接收源地图。

  4. 我在文档或示例中看到的大多数内容似乎都没有达到这个工作流程。

    虽然我在文档中看到如何创建特定于供应商的软件包(在此处复制:Simple solution to share modules loaded via NPM across multiple Browserify or Webpack bundles),但提供的简单示例并未涉及2a和2b。

    我没有在文档中看到为不同的块指定不同的编译配置(源图等)的任何方法,或者创建完全独立的Webpack包,其中包含可以相互引用的单独配置文件,除非通过全球化所有供应商库并将它们用作外部(?),这不是理想的......

    此外,我很好奇Gulp用户是使用gulp-webpack还是使用http://webpack.github.io/docs/usage-with-gulp.html中提供的设置。 (我不确定webpack-dev-server如何适应我的开发环境,所以如果可能的话,我希望坚持gulp-watch。)

    我是否遗漏了其他Webpack用户所知道的内容?最好的方法是什么?

    OR Webpack可能不适合这项工作吗?

1 个答案:

答案 0 :(得分:9)

  

最好通过Gulp观看高效的缓存。 (不要以为我需要更换热模块,并怀疑它可能不适合我的开发环境。)

使用webpack-dev-server

你真的不需要Gulp,但你可以使用它的Node API和Gulp(我这样做)。

  

供应商模块(现在我只有npm软件包,并不是所有软件包都在主文件中暴露UMD全局变量,如果归结为那些)

     

一个。没有解析&在观察期间重新编译(因此重新编译更快),

我不认为在观看期间会解析或重新编译未更改的文件。

  

湾不接收源图(因此浏览器devtools响应速度更快),

不知道如何做到这一点。我认为源地图要么全部存在,要么全部存在。但是你可以使用devtool: 'eval',它比源地图工作得快得多。

  

℃。写入一个独特的vendor.js包,浏览器可以从应用包中单独缓存。

我认为您正在寻找split-by-name-webpack-plugin

  

的应用模块      

一个。明确所有依赖关系(即从'反应'导入React;即使React实际上是全局暴露的,也可以通过#2),

这会奏效。要require全局公开的库,请使用externals config option

  

湾在观看期间重新编译,

已更改的内容将被重新编译(如果您使用webpack-dev-server)。

这并没有回答你的所有问题,但我希望能够弄清楚这是否适合你。我不认为“不看图书馆”就像你说的那样是一个大问题(在重建缓存的模块上只有很少的惩罚),如果你放弃源图并使用devtool: 'eval',我说它真的很快。最后,there's a new watching solution in the works for Webpack所以你可能想要给它一个旋转。它应该有更好的性能。