webpack.base.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. var path = require('path')
  2. var webpack = require('webpack')
  3. const { VueLoaderPlugin } = require('vue-loader')
  4. const ESLintPlugin = require('eslint-webpack-plugin');
  5. module.exports = {
  6. module: {
  7. rules: [
  8. {
  9. test: /\.css$/,
  10. use: [
  11. 'style-loader',
  12. 'css-loader'
  13. ],
  14. },
  15. {
  16. test: /\.vue$/,
  17. loader: 'vue-loader',
  18. options: {
  19. // other vue-loader options go here
  20. }
  21. },
  22. {
  23. // 使用babel-loader处理js文件,会将es5以上的语法进行转义(无法转义es6 API)
  24. test: /\.js$/, // 处理后缀名为js的文件
  25. loader: 'babel-loader', // 使用babel-loader进行处理
  26. exclude: /node_modules/, //排除node_modules下的文件
  27. include: [path.resolve(__dirname, 'packages'), path.resolve(__dirname, 'examples')],
  28. options: {
  29. presets: ["@babel/env"]
  30. }
  31. },
  32. {
  33. test: /\.(png|jpg|gif|svg)$/,
  34. loader: 'file-loader',
  35. options: {
  36. name: '[name].[ext]?[hash]'
  37. }
  38. }
  39. ]
  40. },
  41. resolve: {
  42. alias: {
  43. '@': path.resolve(__dirname, 'packages'),
  44. // 'vue$': 'vue/dist/vue.esm.js'
  45. },
  46. extensions: ['*', '.js', '.vue', '.json']
  47. },
  48. performance: {
  49. hints: false
  50. },
  51. // 不把第三方库打包到bundle中
  52. externals: {
  53. jQuery: 'window.$',
  54. jquery: 'window.$',
  55. $: 'window.$',
  56. bootstrap: 'bootstrap',
  57. moment: 'moment'
  58. },
  59. plugins: [
  60. new VueLoaderPlugin(),
  61. new ESLintPlugin({
  62. extensions: ['js', 'vue'],
  63. // 自动修复。
  64. // 自从eslint推出--fix命令后,如果觉得eslint格式化规则已经够用的话,其实也可以不用prettier了。
  65. fix: true,
  66. }),
  67. ]
  68. }