webpack 之(11) js 语法检查,兼容处理,压缩html和js
语法检查
1/需要在pageage.json中配置eslintConfig
2/需要执行一下命令:
npm i eslint-loader eslint eslint-config-airbnb-base eslint-plugin-import
3/ // eslint-disable-next-line 包含//内容的这一句,表示下一行eslint所有规则都失效
"dependencies": { "css-loader": "^5.2.4", "eslint": "^7.25.0", "eslint-config-airbnb-base": "^14.2.1", "eslint-loader": "^4.0.2", "eslint-plugin-import": "^2.22.1", "file-loader": "^6.2.0", "html-webpack-plugin": "^5.3.1", "mini-css-extract-plugin": "^1.5.0", "optimize-css-assets-webpack-plugin": "^5.0.4", "postcss-loader": "^5.2.0", "postcss-preset-env": "^6.7.0", "style-loader": "^2.0.0", "url-loader": "^4.1.1" }, //继承airbnb的规范 "eslintConfig": { "extends":"airbnb-base" }
const { resolve } = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); module.exports = { entry: './src/js/index.js', output: { filename: 'js/built.js', path: resolve(__dirname, 'build'), }, module: { rules: [ /* 语法检查:eslint-loader eslint 注意:只检查自己写的源代码,第三方的库不用检查的 设置检查规则 package.json 中 eslintConfig中设置 airbnb 风格指南 需要三个库 --eslint-config-airbnb-base --eslint --eslint-plugin-import package.json配置 "eslintConfig": { "extends":"airbnb-base" } */ { test: /\.js$/, //对js文件进行语法检查 exclude: /node_modules/, //忽略第三方的库 loader: 'eslint-loader', options: { // 自动修复 fix: true, }, }, ], }, plugins: [ new HtmlWebpackPlugin({ template: './src/index.html', }), ], mode: 'development', };
js兼容性
const { resolve } = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); module.exports = { entry: './src/js/index.js', output: { filename: 'js/built.js', path: resolve(__dirname, 'build'), }, module: { rules:[ /* js兼容性处理:babel-loader @babel/core @babel/preset-env 1/基本js兼容性处理 -->@babel/preset-env 问题:只能转换基本语法,如promise不能转换 2/全部js兼容性处理 -->@babel/polyfill 只需要在index.js 引入, 第一行添加代码 import '@babel/polyfill' 问题:我只要解决部分兼容性问题,但是要将所有兼容性代码全部引入,体积太大了 3.需要做兼容性处理的就做:按需加载 -- core-js 执行一下 npm i core-js */ { test:/\.js$/, exclude:/node_modules/, loader:'babel-loader', options:{ //预设:只是babel做怎么样的兼容性处理 // presets:['@babel/preset-env'] 在处理第三个问题时,这里需要修改一下 presets:[ [ '@babel/preset-env', { //按需加载 useBuiltIns:'usage', //指定core-js版本 corejs:{ version:3 }, //指定兼容性做到哪个版本浏览器 targets:{ chrome:'60', firefox:'60', ie:'9', safari:'10', edge:'17' } } ] ] } } ], }, plugins: [ new HtmlWebpackPlugin({ template: './src/index.html', }), ], mode: 'development', };
html压缩和js压缩
//生产环境下会自动压缩js代码
在webpack.config.js中mode设置为 生产环境
mode:'production'
html需要配置,需要在new HtmlWebpackPlug()中配置
plgins:[ new HtmlWebpackPlugin({ template:'./src/index.html', minify:{ //移除空格 collapseWhitespace:true //移除注释 removeComments:true } }) ]
分类:
webpack
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现