webpack.base.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. // 不将vue代码打包进我们的组件库代码中,如果将vue代码打包进组件库中则会报错
  59. vue: 'vue',
  60. 'vue-i18n': 'vue-i18n',
  61. 'vue-router': 'vue-router',
  62. 'v-tooltip': 'v-tooltip',
  63. 'vuedraggable': 'vuedraggable'
  64. },
  65. plugins: [
  66. new VueLoaderPlugin(),
  67. new ESLintPlugin({
  68. extensions: ['js', 'vue'],
  69. // 自动修复。
  70. // 自从eslint推出--fix命令后,如果觉得eslint格式化规则已经够用的话,其实也可以不用prettier了。
  71. fix: true,
  72. }),
  73. ]
  74. }