感受了一下打包工具 rollup
,跟 fis
以及 gulp
之类的构建工具相比,rollup
只是做好了自己打包的本分工作,实际要构建的话还得依赖 gulp
之类的构建工具,配合 rollup
本身不错的打包功能(因为rollup本身只是一个打包脚本的工具),rollup的优势在于 tree-shaking
,按照官方的解释其实就是静态分析脚本,把没有被用到的脚本过滤掉,达到精简打包文件的目的,目前我感觉如果项目中组件数量巨多的话可以考虑一下,或者自己个人的小项目可以用用,否则完全可以用 code-splitting
之类的解决方案,并且目前 rollup
个人感觉还不太成熟,还得观望一段时间。
这个项目是基于 rollup
的脚手架,目前基本实现了基本脚手架所需的功能,还有以下几点没实现:
- 多入口打包(用于多页面的情况)
manifest-revision
,目前我没看到有相关的插件实现,后续看下rollup怎么实现插件的功能,看下能不能解决指定静态资源输出目录,目前跟dest
目录同级,后续看下是不是得fork插件来修改或者用其他的解决方案,感觉2解决的话3也会跟着解决html auto inject
,其实就是跟webpack-html-plugin
实现一样的功能,把打包文件路径自动注入进去,目前都得靠显式指定脚本路径,很low,也很难维护(比如文件名带动态hash解决cdn缓存,还是2的问题)
总的来说 tree-shaking
看起来很黑科技很屌,但是不足以成为更换目前构建工具的理由,我还是选择 webpack
初始化
npm install
开发(自带livereload)
npm run dev
发布
npm run build
### 已存在的问题
开发环境下样式都是自动插入到 <head>
的,因为html中已经指定了build之后的外链css,所以会有404请求(我不太想因为这个404请求然后每次dev切prod的时候都得去改html...
现在增加了 html-plugin
,类似于 webpack 的 html-webpack-plugin
,支持 html 压缩,自动注入脚本,ejs 模板,如果 rollup
的 dest
配置带 [hash]
的话那么会自动替换为输出脚本的 hash 值