我最近发现了Parcel,它真是太棒了!
在摆弄 WebAssembly 和 Rust 的时候,我偶然发现了一个之前从未听说过的资源打包插件。说实话,我当时的第一反应是“该死,他们为什么不直接用 webpack 呢?”毕竟,webpack 过去一直满足我的所有需求,而且似乎已经成为事实上的标准。“是时候撸起袖子好好学学怎么配置这玩意儿了……”我心想。
Parcel最让我印象深刻的一点是它没有配置文件。理论上,我心想,这很棒,但我肯定还是需要对某些方面进行精细的控制。
(旁白:“他还没有遇到过这种情况。”)
事实上,到目前为止,我只在两个个人项目中使用过 Parcel,但我完全不需要进行任何配置。一切都运行正常™,而且我还用它做了一些相对特殊的事情:
- 将 Rust 编译为 WebAssembly 并打包生成的工件。
- 将 Markdown 文件打包并作为 React 组件公开
还有一些不太稀奇古怪的东西,它们都开箱即用地得到支持:Javascript、TypeScript、CSS、HTML 等。
不仅仅是零配置
零配置是 Parcel 的一大卖点,但这并非它唯一的优势。像 webpack 这样的打包工具只能转换 JavaScript 文件,而 Parcel 可以转换任何文件类型(更正:webpack 4 现在可以转换其他类型的文件)。任何 Parcel 默认不支持的文件类型都可以通过插件来支持。这意味着你可以使用任何类型的文件作为入口点,而不仅仅是 JavaScript 文件。这使得资源打包的方式更加自然。例如,我可以指定一个 HTML 文件作为入口点,它会递归地查找并打包该入口点之后的所有资源。
Parcel 通过比同类工具更高层次的运行机制来应对这种情况——它会解析支持的文件类型,并转换生成的抽象语法树。当遇到 JavaScript 文件时,它会转换 `<script>`import和require`<script>` 标签;当遇到 HTML 文件时,它会转换 ` <style>`script和`<style>`link标签;当遇到 CSS 文件时,它会转换 `<style>`import和url`<style>` 标签。
哦,而且它他妈的快得要命
根据 Parcel GitHub 页面上的 README 文件,在不缓存资源的情况下,它的速度是 webpack 的两倍;缓存资源后,速度更是快了近一个数量级。Parcel 默认缓存资源,我至今还没遇到过需要关闭缓存的情况。就我个人经验而言,这些数据确实属实。
所以,下次当你需要资源打包工具时,你应该认真考虑一下 Parcel。
文章来源:https://dev.to/dubyabrian/i-recently-discovered-parcel-and-its-amazing-37h3