parcel初体验

news/2024/7/8 3:08:36 标签: python, webpack, 前端

最近需要做一个纯静态网站,因工作量比较少,功能又不复杂,上 webpack 觉得太麻烦了,加上早就对 parcel 种草,所以这次决定试用一下号称零配置的 parcel 。

上手

根据官网文档很快就安装好了。值得点赞的是,在引入 less 文件的时候,parcel 自动检测到了 less,并自动下载了相关编译插件,稍等片刻即可使用。打包速度挺快,HMR 也是挺好用。

深度使用

路径修改

很快定制需求来了,由于 HTML 文件内的相对路径都自动转换成了 dist 下的绝对路径,而我需要能在不启动服务器的情况下,在本地直接打开 index.html 预览。那么就需要将 HTML 内的资源路径都转换成相对路径。查询文档后发现指定 --public-url 即可。

parcel build src/page/index.html --public-url ./ 
复制代码

postcss 插件引入

由于需要支持响应式,所以进入了 rem 单位,为了省事引入了 postcss-pxtorem 插件,能够自动将 px 转换成 rem。

# postcss.config.js
const pxtorem = require('postcss-pxtorem');

module.exports = {
    plugins: [pxtorem({ rootValue: 50, propList: ['*'] })],
};
复制代码

深坑

HMR less 修改后不自动加载

在特定的某个页面下,我修改了 less 文件,parcel 在编译后,浏览器并没有刷新样式。

style appearance 无法加上厂商前缀

正常情况下,appearance: none;会被编译成 -webkit-appearance: none;-moz-appearance: none;appearance: none; ,但是 parcel 并没有转换。一开始我以为是 browserslist 的问题,在查询了 autoprefixer 文档后发现,autoprefixer 没问题。所以问题就出在 parcel 上。引入指定 autoprefixer ,覆盖掉 parcel 的 autoprefixer 问题解决。

# postcss.config.js
const pxtorem = require('postcss-pxtorem');
const autoprefixer = require('autoprefixer');

module.exports = {
    plugins: [autoprefixer, pxtorem({ rootValue: 50, propList: ['*'] })],
};
复制代码

打包目录反人类

第一次把项目打包出来后看了下目录,惊了个呆,居然所有文件平铺在 dist 目录下。。。一个合理的目录至少要把 css/img/font 等资源分门别类放在对应文件夹下,在深入了解了下之后,发现居然不能改,还发现了另外一个深坑。

dist 下的文件无法取消 hash

作为演示 demo 页面,我对强缓存没有需求,所以我不需要对我的资源进行 hash 重命名,这样也不够美观。翻了一遍 issue 后发现,由于打包目录的原因,同名文件可能出现在dist下,所以 hash 文件名策略不能取消。好消息是 parcel 2 会通过插件的方式支持命名策略。github.com/parcel-bund…

总结

parcel 作为一个新前端编译工具,带来了零配置的概念,轻度尝鲜很棒。但是作为生产使用的时候,还有不少 bug 和缺点,目前来讲并不推荐作为生产工具使用。


http://www.niftyadmin.cn/n/1112747.html

相关文章

Oracle存储过程(转)

存储过程创建语法: create or replace procedure 存储过程名(param1 in type,param2 out type) as 变量1 类型(值范围); 变量2 类型(值范围); Begin Select count(*) into 变量1 fro…

用C语言编写Linux实用程序的艺术(转)

用C语言编写Linux实用程序的艺术(转)[more]  Linux 和其他类 UNIX 系统总是附带了大量的工具,它们执行从显而易见的到不可思议的广泛功能。类 UNIX 编程环境的成功很大程度上归功于工具的高品质和选择,以及这些工具之间相互衔接的简易性。作为开发人员…

JavaScript二进制数据序列化和反序列化

最近业余时间在搞h5小游戏,由于同步协议过于频繁,和服务器之间的同步直接用json就显得太浪费了,于是我们商讨之下决定改用二进制。学习过程中并没有遇到一篇就解决问题的文章,遂再总结一发。 1.二进制数据的存储 ArrayBuffer对象、…

网页中meta标记

网页中常常看见有这样的标记&#xff0c;他们是清浏览器缓存用的 <meta http-equiv"Pragma" content"no-cache"><meta http-equiv"Cache-Control" content"no-cache"><meta http-equiv"Expires" content&q…

补充(echo用法、for循环、continue、break、IFS字段分隔符)

文章目录echo用法for循环breakcontinueIFS字段分隔符echo用法 echo -n 表示不换行输出 echo -e 输出转义字符&#xff0c;将转义后的内容输出到屏幕上 常用的转义字符 \b&#xff1a;转义后相当于按退格键&#xff08;backspace&#xff09;&#xff0c;但前提是"\b&qu…

腾讯云独家详解小程序多人视频通话

欢迎大家前往云社区&#xff0c;获取更多腾讯海量技术实践干货哦~作者&#xff1a;小程序音视频产品经理功能体验 在微信小程序中搜索 腾讯视频云 可以加载到我们的演示用小程序&#xff0c;其中 多人音视频 功能可用于体验和测试多人音视频通话功能。出于 UI 美观和画面大小的…

Linux文件及目录的Suid/Guid和T属性(转)

Linux文件及目录的Suid/Guid和T属性(转)[more]  1. 4000---调整用户号 2000---调整组号 1000---粘着置位 2. suid/guid程序 当一个程序的用户或组被置位的时候&#xff0c;即4000或2000时&#xff0c;可实现某些特殊的功能一般来说&#xff0c;一个运行中的程序为运行这个程序…

用循环语句完成简单图案组成——一篇就够了!!!

文章目录九九乘法表for循环while循环成品直角三角形代码成品等腰三角形代码成品菱形代码成品长方形代码成品平行四边形代码成品梯形代码成品九九乘法表 for循环 while循环 成品 直角三角形 代码 成品 等腰三角形 代码 成品 菱形 代码 1 #!/bin/bash2 for ((i1;i<10;i))3…