CodeSky 代码之空

随手记录自己的学习过程

折腾记:Hello Parcel

2017-12-19 22:15分类: JavaScript评论: 12

Parcel 是一个新出的「快速,零配置的 Web 应用程序打包器」,光是零配置这一点,看着就已经比 webpack 好一万倍了——webpack 让我们怀疑,前端是否要衍生出一种副职业:配置工程师。我至今也没有能够掌握「如何优雅的配置 Webpack」,之前本来准备用 poi来简化 webpack 配置,不过突然想起了这个更高、更快、更强、(更懒)的新道具,于是又折腾了起来。

Parcel 有啥优点

首先,他的优点是零配置,也就是说,你不用自己配置就能支持 JS / CSS / HTML,开箱即用。此外,零配置不代表不能配置,它提供了接口,可以让你进行一些插件的开发,在此基础上做出一些 DIY,零配置的意义其实是带默认值、开箱即用的配置,而并非不可配,灵活性差。

其次,速度快,这也是很重要的一个提高,webpack 要打包大型项目不免让人觉得有点慢,而 Parcel 利用多核与缓存(你可以在打包后在目录内看到 .cache),让打包速度提高了几倍。

Hello World for Vue and Typescript

首先,parcel 的插件列表可以在相关 issue 中看到,中文也已经有一个 awesome-parcel 了(但不太全,可以去补充一波)

这里我就配了一下 Vue + Typescript,事实上,单用其中的一个确实可以达到开箱即用,但是两个结合的时候还是踩了一些坑。

整个项目可以看:https://github.com/csvwolf/parcel-test

从项目中就可以看出非常的简单,配置以下依赖:

1  "devDependencies": {
2    "parcel-bundler": "^1.2.0",
3    "parcel-plugin-typescript": "^0.2.1",
4    "parcel-plugin-vue": "^1.0.1",
5    "typescript": "^2.6.2",
6    "vue": "^2.5.11"
7  }
8

需要注意的是,尽管说好了全局安装 parcel-bundler,然而在项目里还要在安装一次,而且需要由这个来启动,否则会无法正常运行。

然后配置 tsconfig.json

1{
2  "compilerOptions": {
3    "target": "es5",
4    "strict": true,
5    "module": "es2015",
6    "moduleResolution": "node"
7  }
8}
9

配完官方推荐配置,滚蛋,两个插件安装完就能搞定了。

哈?这么简单

这么看来,似乎并没有什么坑——Emmm,比起 webpack 来,我们在前端有一个常见的功能:alias,我似乎并没有看到这个功能,可是按照官方的设定,基本上是这么玩的:

官方配置不能满足 -> 插件 -> 插件不能满足 -> 插件暴露配置

那么我应该给 plugin 提 issue 还是 parcel 提 issue 呢……我陷入了沉思。

此外,还有一些微小的(也不怎么小的)bugs 和待改进的功能点,不过 plugin 的作者也在积极修复,态度也非常棒,但是相关 plugin 的用户还不是很多,感觉踩坑的人还是略少,期待 parcel 生态有更好的发展。总的而言,如果目前要把复杂的项目迁移到 parcel,我还不太推荐这么做,不过如果是在现有的项目中使用试试水或者只是单纯的懒得配置,那真是极好的。

评论 (3)

llfylwg2017年12月20日 20:31

用yarn add --dev parcel-bundler安装,一直安装不上,博主有遇到吗???

敖天羽2017年12月21日 13:17

没有 贴出你的报错看看?

taugocauci2017年12月20日 09:47

我比较喜欢项目里安装一次后用 npx 执行,不用安装到全局。

不给力的面条2017年12月19日 23:47

尤雨溪在微博说这项目代码写的好的时候,就体验了一下,结果官方demo的build流程都报错,不知道这两周开发的怎么样了

llfylwg2017年12月20日 11:58

要用node8+