webpack4.0 入门实践教程(6)
url-loader 和 file-loader 是什么关系呢?
简单地说, url-loader 封装了 file-loader 。 url-loader 不依赖于 file-loader ,即使用 url-loader 时,只需要安装 url-loader 即可,不需要安装 file-loader ,因为 url-loader 内置了 file-loader 。
通过上面的介绍,我们可以看到,url-loader 工作分两种情况:
- 文件大小小于 limit 参数,url-loader 将会把文件转为 DataURL;
- 文件大小大于 limit,url-loader 会调用 file-loader 进行处理,参数也会直接传给 file-loader。因此我们只需要安装 url-loader 即可。
有关 url-loader 和 file-loader 的解析:webpack 之图片引入-增强的 file-loader:url-loader
配置 babel
babel-loader
Babel 是一个让我们能够使用 ES 新特性的 JS 编译工具,我们可以在 webpack 中配置 Babel,以便使用 ES6、ES7 标准来编写 JS 代码。
Babel 7 的相关依赖包需要加上 @babel scope。一个主要变化是 presets 设置由原来的 env 换成了 @babel/preset-env , 可以配置 targets , useBuiltIns 等选项用于编译出兼容目标环境的代码。其中 useBuiltIns 如果设为 "usage" ,Babel 会根据实际代码中使用的 ES6/ES7 代码,以及与你指定的 targets,按需引入对应的 polyfill ,而无需在代码中直接引入 import '@babel/polyfill' ,避免输出的包过大,同时又可以放心使用各种新语法特性。
npm i babel-loader @babel/core @babel/preset-env -D
笔者这里配的版本号如下
{
"babel-loader": "^8.0.4",
"@babel/core": "^7.1.2",
"@babel/preset-env": "^7.1.0"
}
babel-loader: 用 babel 转换 ES6 代码需要使用到 babel-loader
@babel-preset-env: 默认情况下是等于 ES2015 + ES2016 + ES2017,也就是说它对这三个版本的 ES 语法进行转化。
@babel/core:babel 核心库
根目录下新建 .babelrc 文件
{
"presets": [
[
"@babel/preset-env",
{
"modules": false,
"targets": {
"browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
},
"useBuiltIns": "usage"
}
]
]
}
- presets 是一堆 plugins 的预设,起到方便的作用。
- plugins 是编码转化工具,babel 会根据你配置的插件对代码进行相应的转化。
修改 webpack.config.js
module.exports = {
module: {
rules: [
//...
{
test: /\.m?js$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader'
}
}
]
}
}
内容版权声明:除非注明,否则皆为本站原创文章。
