Open swiftwind0405 opened 4 years ago
loader 可以配置以下参数:
test
use
include
exclude
query
loader 是链式调用,所以执行顺序是从右到左的。
presets 属性告诉 Babel 要转换的源码使用了哪些新的语法特性,一个 Presets 对一组新语法特性提供支持,多个 Presets 可以叠加。 Presets 其实是一组 Plugins 的集合,每一个 Plugin 完成一个新语法的转换工作。Presets 是按照 ECMAScript 草案来组织的。
presets
需要安装:
//安装插件 --@babel/core是babel核心库 npm install babel-loader @babel/core -D //同时要按装,babel-loader只是打通webpack的一个桥梁,并不会转义代码,需要借助@babel/preset-env 来做语法的转换 npm install @babel/preset-env -D //还有继续安装@babel/polyfill -- 作用是帮助低版本的浏览器弥补缺失的变量以及函数,同时可以在options配置,根据业务代码来做低版本的缺失弥补,这样打包代码可以做到精简,注意的是,这个插件只适合做业务代码带包,因为会污染全局 npm install @babel/polyfill -D
.babelrc
weback.config.js
module.exports = { module: { rules: [ { test: /\.js$/, use: 'babel-loader' } ] } };
项目根目录下增加 .babelrc 配置文件 .babelrc
{ "presets": ["@babel/preset-env","@babel/preset-react"] }
module.exports = { module: { rules: [ { test: /\.js$/, use: { loader: 'babel-loader', options: { "presets": ["@babel/preset-env", "@babel/preset-react"] } } } ] } };
css最基本的编译要依靠于style-loader、css-loader这两个加载器,所谓最基本,就是在不考虑使用css预处理器以及css后处理器的情况。预处理器包括less、scss、sass、stylus,后处理器如postcss的autoprefixer等。首先我们先弄明白各加载器的作用:
webpack.config.js
module: { rules: [ { test: /\.css$/, use: ["style-loader", "css-loader"] } ]; }
autoprefixer 是 css 后处理器 postcs s提供的一个对 css3 中个别属性在不同浏览器下需要添加浏览器前缀的样式处理工具,因此在使用 autoprefixer 之前,我们需要安装 postcss-loader 来加载它。
module: { rules: [{ test: /\.css$/, use: [ { loader: "style-loader" }, { loader: "css-loader",options: { importLoaders: 1 } },//importLoaders解决由于css-loader处理文件导入的方式导致postcss-loader不能正常使用的问题 { loader: "postcss-loader" } //指定postcss加载器 ], exclude: /node_modules/ }] }
根目录下新建 postcss.config.js 配置文件:
postcss.config.js
module.exports = { plugins: [ require("autoprefixer")({overrideBrowserslist:'last 5 version'}) // overrideBrowserslist最终生成的css兼容最近的N个版本 ] }
需要注意,由于css-loader处理文件导入的方式,因此加载器postcss-loader不能与CSS模块一起使用。 为了使它们正常工作,可以添加 css-loader 的importLoaders选项。
也可以直接写在loader里:
{ loader: 'postcss-loader', options: { plugins: loader => [ require('autoprefixer')({overrideBrowserslist: "last 5 version"}) ] } }
module.exports = { module: { rules: [ { test: /\.less/, use: ['style-loader', 'css-loader', 'less-loader'] } ] } };
loader配置的顺序不可调换,因为 less-loader 是把 less 转换成 css,而 css-loader 是解析处理 css 里的 url 路径,并将 css 文件转换成一个模块,style-loader 是将 css 文件变成 style 标签插入到 head 中。
如果要转换 less 或者 sass,那么除了 loader,还需要安装 less 或者 sass:
npm install less less-loader -D
安装 mini-css-extract-plugin,将 'style-loader' 修改为 {loader: MiniCssExtractPlugin.loader}
'style-loader'
{loader: MiniCssExtractPlugin.loader}
const MiniCssExtractPlugin = require('mini-css-extract-plugin'); module.exports = { module: { rules: [ { test: /\.less/, use: [{loader: MiniCssExtractPlugin.loader}, 'css-loader', 'less-loader'] } ] }, plugins: [ new MiniCssExtractPlugin({ filename: 'css/[name].css' }) ] };
此插件为每个包含 CSS 的 JS 文件创建一个单独的 CSS 文件,并支持 CSS 和 SourceMap 的按需加载。 注意:这里说的每个包含 CSS 的 JS 文件,并不是说组件对应的 JS 文件,而是打包之后的 JS 文件.
module.exports = { module: { rules: [ { test: /.(png|jpg)$/, // 图片或者字体等文件 use: [ { loader: "file-loader", options: { name: "[name]_[hash].[ext]", outputPath: "images/" } } } ] } ] } };
module.exports = { module: { rules: [ { test: /.(png|jpg)$/, // 图片或者字体等文件 use: [ { loader: 'url-loader', options: { limit: 10240, // 处理成 base64 的边界值,单位是字节 outputPath: 'images' //如果希望图片存放在单独的目录下,那么需要指定outputPath } } ] } ] } };
常用 loaders
loader 的使用
loader 可以配置以下参数:
test
: 匹配处理文件的扩展名的正则表达式use
: loader 名称include
/exclude
: 手动指定必须处理的文件夹或屏蔽不需要处理的文件夹query
: 为 loader 提供额外的设置选项loader 是链式调用,所以执行顺序是从右到左的。
转换脚本语言
babel-loader
presets
属性告诉 Babel 要转换的源码使用了哪些新的语法特性,一个 Presets 对一组新语法特性提供支持,多个 Presets 可以叠加。 Presets 其实是一组 Plugins 的集合,每一个 Plugin 完成一个新语法的转换工作。Presets 是按照 ECMAScript 草案来组织的。需要安装:
1.配置
.babelrc
weback.config.js
项目根目录下增加
.babelrc
配置文件 .babelrc2. 直接配置在 babel-loader 中
样式文件的转换
css最基本的编译要依靠于style-loader、css-loader这两个加载器,所谓最基本,就是在不考虑使用css预处理器以及css后处理器的情况。预处理器包括less、scss、sass、stylus,后处理器如postcss的autoprefixer等。首先我们先弄明白各加载器的作用:
css-loader
webpack.config.js
style-loader
postcss-loader
autoprefixer 是 css 后处理器 postcs s提供的一个对 css3 中个别属性在不同浏览器下需要添加浏览器前缀的样式处理工具,因此在使用 autoprefixer 之前,我们需要安装 postcss-loader 来加载它。
webpack.config.js
根目录下新建
postcss.config.js
配置文件:也可以直接写在loader里:
loader配置的顺序不可调换,因为 less-loader 是把 less 转换成 css,而 css-loader 是解析处理 css 里的 url 路径,并将 css 文件转换成一个模块,style-loader 是将 css 文件变成 style 标签插入到 head 中。
如果要转换 less 或者 sass,那么除了 loader,还需要安装 less 或者 sass:
分离 css 文件
安装 mini-css-extract-plugin,将
'style-loader'
修改为{loader: MiniCssExtractPlugin.loader}
webpack.config.js
加载文件
file-loader
webpack.config.js
url-loader
webpack.config.js
参考文档