webpack配合babel使用
1 babel介绍#
①Babel 是一个 JavaScript 编译器,可以把ES6的语法转为兼容浏览器的ES5语法
②Babel中文官网:https://www.babeljs.cn/
③Babel可以单独使用,但是一般都是和webpack结合一起使用
2 webpack里使用babel
拷贝一份工程
1 安装Bable依赖
npm install --save-dev webpack-dev-server
npm install --save-dev style-loader css-loader
npm install --save-dev file-loader url-loader
npm install --save-dev html-webpack-plugin
// 已经在项目里安装了webpack的情况下
npm install --save-dev babel-loader @babel/core @babel/preset-env
package.json
{
"name": "babel",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {
"css-loader": "^3.4.2",
"file-loader": "^5.1.0",
"html-webpack-plugin": "^3.2.0",
"style-loader": "^1.1.3",
"url-loader": "^3.0.0"
},
"devDependencies": {
"@babel/core": "^7.8.4",
"@babel/preset-env": "^7.8.4",
"babel-loader": "^8.0.6",
"webpack": "^4.41.6",
"webpack-cli": "^3.3.11",
"webpack-dev-server": "^3.10.3"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack --config ./webpack.config.js",
"start": "webpack-dev-server --open"
},
"author": "",
"license": "ISC"
}
2 配置 webpack.config.js
//引用Node.js中的path模块,处理文件路径的小工具
const path = require("path");
//引入插件
const HtmlwebpackPlugin = require("html-webpack-plugin")
// 导出一个webpack具有特殊属性配置的对象
module.exports = {
mode: "development" ,
//入口
//入口模块文件路径
entry: "./src/main.js" ,
//出口是对象
output: {
//path是一个绝对路径,__dirname 是当前js的绝对路径
path: path.join(__dirname , "./dist/"), //打包的结果文件存储目录
filename : "bundle.js" //打包的结果文件名
},module:{ //模块
rules: [ // 规则
{
test : /\.css$/ , //正则表达式,匹配 .css 文件资源
use: [
"style-loader",
"css-loader"
]
} ,
{
test : /\.(png|svg|jpg|gif)$/ , //正则表达式,匹配 .css 文件资源
use: [
"file-loader"
]
} ,
{
test:/\.?js$/,
exclude:/(node_modules|bower_components)/,//排除掉node_module目录
use:{
loader:'babel-loader',
options:{
presets:['@babel/preset-env'] //转码规则
}
}
}
]
},
//配置插件
plugins: [
new HtmlwebpackPlugin({
//此插件作用是将 index.html打包到bundle.js所在目录中
//同时会在 index.html中自动的在<script>引入 bundle.js
template : "./index.html"
})
],
// 实时重新加载
devServer: {
contentBase: './dist'
}
}
3 修改 main.js
// 模块方式导入css,最终会打成js,打包在 bundle.js中
import './css/style.css'
const a = 1
// a =2 直接编译报错
const arr = [ 1 , 2, 3]
arr.forEach( item => {
console.log(item)
}
)
运行 npm run build
,然后查看bundle.js代码,已经转换成ES5语法了,试试 npm run start
命令
关于作者
王硕,网名信平,十多年软件开发经验,业余架构师,精通Java/Python/Go等,喜欢研究技术,著有《PyQt 5 快速开发与实战》《Python 3.* 全栈开发》,多个业余开源项目托管在GitHub上,欢迎微博交流。