webpack.config.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. const {resolve} = require('path')
  2. const HtmlWebpackPlugin = require('html-webpack-plugin')
  3. const EsLintPlugin = require('eslint-webpack-plugin')
  4. module.exports = {
  5. entry:'./src/js/index.js',
  6. output:{
  7. filename:'js/built.js',
  8. path:resolve(__dirname,'build')
  9. },
  10. module:{
  11. rules:[
  12. /*
  13. 1、js 兼容性处理: babel-loader @babel/core @babel/preset-env
  14. 只能转换基本语法 类似promise无法转换
  15. 2、全部js兼容处理: @babel/polyfill
  16. 比较暴力,全部兼容处理,体积太大
  17. 3、选择性兼容处理:corejs
  18. */
  19. {
  20. test:/\.js$/,
  21. exclude: /node_modules/,
  22. loader: 'babel-loader',
  23. options:{
  24. // 预设:指示babel做怎样的兼容性处理
  25. presets:[
  26. [
  27. '@babel/preset-env',
  28. {
  29. useBuiltIns: 'usage',
  30. corejs:{
  31. version:3
  32. },
  33. targets:{
  34. chrome: '60',
  35. firefox: '60',
  36. ie:'9',
  37. safari: '10',
  38. edge: '17'
  39. }
  40. }
  41. ]
  42. ]
  43. }
  44. }
  45. ]
  46. },
  47. plugins:[
  48. new HtmlWebpackPlugin({
  49. template:'./src/index.html'
  50. }),
  51. new EsLintPlugin({
  52. extensions: ['js', 'json', 'coffee'],
  53. //exclude: '/node_modules/', //default
  54. fix:true
  55. })
  56. ],
  57. mode:'development'
  58. }