讲到浏览器,脑中浮现的通常是 Google Chrome、IE(Edge)、FireFox、Safari...等较常见的浏览器,光是这些台湾的主流浏览器对『前端 3 宝』的支援度就有些差异,更不用说其他较不常见的浏览器,今天就来学习如何让 Webpack 具备支援多浏览器的神力。
在开发前,可以先确定要支援的浏览器种类,并且使用 BrowsersList
这个插件来定义在专案内。
方法 1 - 编辑 package.json 加入设定(以下设定内容仅供参考)
"browserslist": [
"defaults"
]
方法 2 - 新增.browserslistrc
档案,独立出一个设定档
defaults
撰写方式可以参考BrowsersList的文件。
完成设置後,可以透过指令查看支援了哪些浏览器和版本。
$ npx browserslist
有些浏览器的 CSS 属性需要加上前缀词才能生效(特别是 CSS 3 以後的属性,例如:-webkit、-moz...,要人工加上这些前缀费时费力,PostCSS 像 Webpack 一样是多功能的套件,但是专精在 css 後处理,可以把新的语法转成旧的写法,也能自动加上前缀来支援各种浏览器。
$ npm i -D postcss-loader postcss
编辑 webpack.config.js,修改 css 的 loader 配置:
module.exports = {
module: {
rules: [
{
test: /\.css$/i,
use: [
{
loader: 'css-loader',
options: {
importLoaders: 1,
}
},
{
loader: "postcss-loader",
},
],
},
],
},
};
新增档案 postcss.config.js
,并且写入要使用的功能,这边先加入自动补上前缀的功能。
plugins: [
require('autoprefixer')
]
安装 autoprefixer
$ npm i -D autoprefixer
完成安装後就可以测试是否成功了。
PostCSS 提供 CSS 的加工处理,Bable 则是专职 JavaScript 的处理,可以把一些较新的语法转成旧的写法来支援无法解析的浏览器(例如:ES6 的箭头函式转成 ES5 的写法)。
安装 Babel Loader和相关套件。
npm i -D babel-loader @babel/core @babel/preset-env
编辑 webpack.config.js,在 module里面新增一个 rules物件。
module: {
rules: [
{
test: /\.m?js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
}
}
]
}
设定 babel
loader: 'babel-loader',
options: {
presets: [
['@babel/preset-env']
]
}
babel.config.json
来独立撰写设定。
{
"presets": ["@babel/preset-env"]
}
<<: [第十只羊] 迷雾森林舞会III 参见排版神器 Tailwind
>>: DAY 12:Concurrency Patterns 融会贯通+Graceful Shutdown,正确关闭各个宇宙的次元门
昨篇已介绍data-*基本介绍,这篇介绍data於bootstrap上的使用 关於提示框,其实工作...
前言 话说,看了历年这麽多iThome铁人赛的文章,觉得这是一个相当好的活动,曾经从历年铁人大大们的...
好的,你很辛苦的写了很多API function,但是你却不希望闲杂人等没事就call一下你的API...
【前言】 这篇文章要来分析我负责的整个项目,并且准备所有我需要的东西! 【(使用者看见的)前端与(...
先建个表方便理解 mysql> create table account ( -> id...