webpack.base.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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: /\.vue$/,
  10. loader: 'vue-loader',
  11. },
  12. {
  13. test: /\.js$/,
  14. loader: 'babel-loader',
  15. // include: [
  16. // path.resolve(__dirname, './node_modules/pc-component-v3/dist/pc-component-v3.js'),
  17. // ],
  18. // exclude: file => (
  19. // /node_modules/.test(file) &&
  20. // !/\.vue\.js/.test(file)
  21. // ),
  22. },
  23. {
  24. test: /\.css$/,
  25. use: (process.env.NODE_ENV === 'production') ? [
  26. {
  27. loader: MiniCssExtractPlugin.loader,
  28. options: {
  29. publicPath: '../'
  30. }
  31. },
  32. 'css-loader'] : ['style-loader', 'css-loader']
  33. },
  34. {
  35. test: /\.(png|jpg|gif|svg)$/,
  36. loader: 'file-loader',
  37. options: {
  38. name: './image/[name].[ext]?[hash]'
  39. }
  40. },
  41. {
  42. test: /\.(eot|woff|woff2|ttf)$/,
  43. loader: 'file-loader',
  44. options: {
  45. name: './font/[name].[ext]?[hash]'
  46. }
  47. },
  48. {
  49. test: /\.md$/,
  50. use: [
  51. {
  52. loader: "html-loader",
  53. },
  54. {
  55. loader: "markdown-loader",
  56. options: {
  57. // Pass options to marked
  58. // See https://marked.js.org/using_advanced#options
  59. },
  60. },
  61. ],
  62. },
  63. ]
  64. },
  65. resolve: {
  66. alias: {
  67. // 'vue$': 'vue/dist/vue.esm.js',
  68. '@static': path.resolve('static'),
  69. },
  70. extensions: ['*', '.js', '.vue', '.json']
  71. },
  72. performance: {
  73. hints: false
  74. },
  75. externals: {
  76. jQuery: 'window.$',
  77. jquery: 'window.$',
  78. bootstrap: 'bootstrap',
  79. BootstrapDialog: 'BootstrapDialog',
  80. d3: 'd3',
  81. echarts: 'echarts',
  82. moment: 'moment',
  83. },
  84. plugins: [
  85. new VueLoaderPlugin(),
  86. new ESLintPlugin({
  87. extensions: ['js', 'vue'],
  88. // 自动修复。
  89. // 自从eslint推出--fix命令后,如果觉得eslint格式化规则已经够用的话,其实也可以不用prettier了。
  90. fix: true,
  91. }),
  92. ]
  93. }