在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
前言
|
属性 | 描述 |
---|---|
> 1% | 全球超过1%人使用的浏览器 |
> 5% in CN | 指定国家使用率覆盖 |
last 2 versions | 所有浏览器兼容到最后两个版本根据CanIUse.com追踪的版本 |
Firefox ESR | 火狐最新版本 |
Firefox > 20 | 指定浏览器的版本范围 |
not ie <=8 | 方向排除部分版本 |
Firefox 12.1 | 指定浏览器的兼容到指定版本 |
webpack.config.js
module.exports = { module: { rules: [ { test: /\.scss$/, use: [ "style-loader", "css-loader", "sass-loader", "postcss-loader" ], include: /src/, }, ] } }
用途: 将Es6+ 语法转换为Es5语法。
安装
cnpm i babel-loader @babel/core @babel/preset-env -D
配置
webpack.config.js
module.exports = { module: { rules: [ { test: /\.js$/, use: { loader: "babel-loader", options: { presets: [ ['@babel/preset-env', { targets: "defaults"}] ] } } }, ] } }
用途: 用于配置项目typescript
安装
cnpm i ts-loader typescript -D
配置
webpack.config.js
当前配置ts-loader不会生效,只是会编译识别.ts文件, 主要配置文件在tsconfig.json里
module.exports = { module: { rules: [ { test: /\.ts$/, use: "ts-loader" }, ] } }
tsconfig.json
{ "compilerOptions": { "declaration": true, "declarationMap": true, // 开启map文件调试使用 "sourceMap": true, "target": "es5", // 转换为Es5语法 } }
webpack.config.js
module.exports = { entry: "./src/index.ts", output: { path: __dirname + "/dist", filename: "index.js", }, module: { rules: [ { { test: /\.ts$/, use: "ts-loader", } } ] } }
用途: 我们有时候想引入一个html页面代码片段赋值给DOM元素内容使用,这时就用到html-loader
安装
cnpm i [email protected] -D
建议安装低版本,高版本可能会不兼容导致报错。我这里安装的是0.5.5版本
配置
index.js
import Content from "../template.html" document.body.innerHTML = Content webpack.config.js module.exports = { module: { rules: [ { test: /\.html$/, use: "html-loader" } ] } }
用途: 用于处理文件类型资源,如jpg,png等图片。返回值为publicPath为准。
安装
cnpm i file-loader -D
配置
index.js
import img from "./pic.png" console.log(img) // https://www.baidu.com/pic_600eca23.png
webpack.config.js
module.exports = { module: { rules: [ { test: /\.(png|jpg|jpeg)$/, use: [ { loader: "file-loader", options: { name: "[name]_[hash:8].[ext]", publicPath: "https://www.baidu.com" } } ] } ] } }
用途: url-loader也是处理图片类型资源,只不过它与file-loader有一点不同,url-loader可以设置一个根据图片大小进行不同的操作,如果该图片大小大于指定的大小,则将图片进行打包资源,否则将图片转换为base64字符串合并到js文件里
安装
cnpm i url-loader -D
配置
index.js
import img from "./pic.png"
webpack.config.js
module.exports = { module: { rules: [ { test: /\.(png|jpg|jpeg)$/, use: [ { loader: "url-loader", options: { name: "[name]_[hash:8].[ext]", limit: 10240, // 这里单位为(b) 10240 => 10kb // 这里如果小于10kb则转换为base64打包进js文件,如果大于10kb则打包到dist目录 } } ] } ] } }
用途: 我们在编译图片时,都是使用file-loader和url-loader,这两个loader都是查找js文件里的相关图片资源,但是html里面的文件不会查找所以我们html里的图片也想打包进去,这时使用html-withimg-loader
安装
cnpm i html-withimg-loader -D
配置
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>首页</title> </head> <body> <h4>我蛙人</h4> <img src="./src/img/pic.jpg" alt=""> </body> </html>
webpack.config.js
如果打包出现img的src路径为[Object Module],解决方案有
module.exports = { module: { rules: [ { test: /\.(png|jpg|jpeg)$/, use: { loader: "file-loader", options: { name: "[name]_[hash:8].[ext]", publicPath: "http://www.baidu.com", esModule: false } } }, { test: /\.(png|jpeg|jpg)/, use: "html-withimg-loader" } ] } }
用途: 用于编译.vue文件,如我们自己搭建vue项目就可以使用vue-loader, 以下简单了解一下,这里就不多赘述啦。
安装
cnpm i [email protected] vue vue-template-compiler -D
配置
main.js
import App from "./index.vue" import Vue from 'Vue' new Vue({ el: "#app", render: h => h(App) })
index.vue
<template> <div class="index"> {{ msg }} </div> </template> <script> export default { name: 'index', data() { return { msg: "hello 蛙人" } }, created() {}, components: {}, watch: {}, methods: {} } </script> <style scoped> </style>
webpack.config.js
const VueLoaderPlugin = require('vue-loader/lib/plugin') module.exports = { entry: "./src/main.js", output: { path: __dirname + "/dist", filename: "index.js", }, module: { rules: [ { test: /\.vue$/, use: "vue-loader" } ] }, plugins: [ new VueLoaderPlugin() ] }
用途: 用于检查代码是否符合规范,是否存在语法错误。
安装
cnpm i eslint-loader eslint -D
配置
index.ts
var abc:any = 123; console.log(abc)
.eslintrc.js
这里简单写几个规则
module.exports = { root: true, env: { browser: true, }, rules: { "no-alert": 0, // 禁止使用alert "indent": [2, 4], // 缩进风格 "no-unused-vars": "error" // 变量声明必须使用 } }
webpack.config.js
module.exports = { module: { rules: [ { test: /\.ts$/, use: ["eslint-loader", "ts-loader"], enforce: "pre", exclude: /node_modules/ }, { test: /\.ts$/, use: "ts-loader", exclude: /node_modules/ } ] } }
到此这篇关于分享12个Webpack中常用的Loader(小结)的文章就介绍到这了,更多相关Webpack常用的Loader内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界!
请发表评论