情况并不一样,webpack 首先是一个 bundler,所以它要首先分析依赖,然后再根据依赖关系生成代码。所以任何一个文件变了,它都要重新分析依赖关系,如果其中哪里有语法错误,整个项目都没法构建。在这之上,dev server 只是一个附带产品,用来实时提供打包的结果而已。
snowpack、vite 这些直接并不是 bundler,开发的时候不需要打包,所以它们也不会去分析依赖关系。你向它要哪个文件,就直接把哪个文件编译成 es module 发给你,浏览器自己会去 import。所以 dev server 就是起了一个 http server 而已,你需要哪个文件自己写在 html 里,每次只要编译好这一个文件就可以了。不像 webpack 首先要先打包,想快就只有缓存,依赖分析这个过程还是免不了的。
传统的 webpack 都是用 babel、tsc 这些 js 的工具做翻译,单线程 esbuild 快出来一个数量级并不夸张。当然现在也有 esbuild-loader 可以替换 ts/babel-loader,但目前不管是 create-react-app 还是 vue-cli,应该都还没有用 esbuild-loader。
至于打包的话,esbuild 由于是 go 写的,本身单线程就比 node 快上一个数量级,又能轻松跑满所有核,秒杀一切 js 工具完全不夸张。但打包速度这件事,一般情况下怎样都好,不管用哪个,我觉得都是无所谓的。snowpack 是用户自己从 webpack、rollup 里面选,它都支持;vite 用了 rollup,估计是实测 minify 之后的结果是最小的吧。
【 在 pangwa (学门手艺,混口饭吃.) 的大作中提到: 】
: 我们之前从webpack3升级到4, 号称速度提高很大, 但实测基本编译速度没啥提升, 感觉有时候这些这些benchmark也是在理想情况下测的...
--
FROM 115.188.159.*