webpack.base.conf.js 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. const webpack = require('webpack');
  2. const config = require('../package.json');
  3. const MiniCssExtractPlugin = require('mini-css-extract-plugin');
  4. const VueLoaderPlugin = require('vue-loader/lib/plugin');
  5. const moment = require('moment');
  6. const isDev = process.env.NODE_ENV === 'development';
  7. var test = process.env.NODE_ENV === 'test';
  8. const path = require('path');
  9. module.exports = {
  10. stats: {
  11. entrypoints: false,
  12. children: false
  13. },
  14. resolve: {
  15. extensions: ['.js', '.vue', '.json'],
  16. alias: {
  17. 'vue$': 'vue/dist/vue.esm.js',
  18. }
  19. },
  20. module: {
  21. rules: [
  22. test ? {
  23. test: /\.(js|ts)/,
  24. include: path.resolve('src'), // instrument only testing sources with Istanbul, after ts-loader runs
  25. loader: 'istanbul-instrumenter-loader'
  26. }: {},
  27. test ? { test: /\.css$/, loader: 'style!css' } : {},
  28. test ? { test: /\.scss$/, loader: 'style-loader!css-loader!sass-loader' } : {},
  29. !test ?{
  30. test: /\.(sa|sc|c)ss$/,
  31. use: [
  32. isDev ? 'style-loader' : MiniCssExtractPlugin.loader,
  33. 'css-loader',
  34. 'postcss-loader',
  35. {
  36. loader: 'sass-loader',
  37. options: {
  38. data: `@import "./src/styles/index.scss"; `,
  39. },
  40. }
  41. ],
  42. }:{},
  43. {
  44. test: /\.svg$/,
  45. use: 'raw-loader'
  46. },
  47. {
  48. test: /\.vue$/,
  49. use: [
  50. {
  51. loader: 'vue-loader',
  52. options: {
  53. /* preLoaders: {
  54. js: 'istanbul-instrumenter-loader?esModules=true'
  55. }, */
  56. loaders: {
  57. sass: [isDev ? 'style-loader' : MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader', 'postcss-loader']
  58. }
  59. }
  60. }
  61. ]
  62. },
  63. {
  64. enforce: 'pre',
  65. test: /\.(js|vue)$/,
  66. loader: 'eslint-loader',
  67. exclude: /node_modules/
  68. },
  69. {
  70. test: /\.js$/,
  71. exclude: /node_modules/,
  72. use: {
  73. loader: 'babel-loader'
  74. }
  75. },
  76. {
  77. test: /\.(png|jpg|gif|webp)$/,
  78. loader: 'url-loader',
  79. options: {
  80. limit: 3000,
  81. name: 'img/[name].[ext]',
  82. }
  83. },]
  84. },
  85. plugins: [
  86. new webpack.BannerPlugin({
  87. banner: "NutUI2(" + config.version + ") - [filebase], [hash], " + moment().format()
  88. }),
  89. new VueLoaderPlugin()
  90. ],
  91. }