webpack.common.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. process.env.NODE_CONFIG_DIR = `${__dirname}/dist/config/`;
  2. const config = require("config");
  3. const path = require("path");
  4. const { VueLoaderPlugin } = require("vue-loader");
  5. const HtmlWebpackPlugin = require("html-webpack-plugin");
  6. module.exports = {
  7. entry: "./src/main.js",
  8. output: {
  9. path: `${__dirname}/dist/build/`,
  10. filename: "[name].[contenthash].js"
  11. },
  12. resolve: {
  13. alias: {
  14. "@": path.resolve(__dirname, "./src/")
  15. },
  16. extensions: [".js", ".vue"]
  17. },
  18. plugins: [
  19. new VueLoaderPlugin(),
  20. new HtmlWebpackPlugin({
  21. title: config.get("siteSettings.sitename"),
  22. hash: true,
  23. template: "dist/index.tpl.html",
  24. inject: "body",
  25. filename: "index.html"
  26. })
  27. ],
  28. module: {
  29. rules: [
  30. {
  31. enforce: "pre",
  32. test: /\.vue$/,
  33. loader: "eslint-loader",
  34. exclude: /node_modules/
  35. },
  36. {
  37. test: /\.vue$/,
  38. loader: "vue-loader",
  39. exclude: /node_modules/
  40. },
  41. {
  42. enforce: "pre",
  43. test: /\.js$/,
  44. loader: "eslint-loader",
  45. exclude: /node_modules/
  46. },
  47. {
  48. test: /\.js$/,
  49. loader: "babel-loader",
  50. exclude: /node_modules/
  51. },
  52. {
  53. test: /\.scss$/,
  54. exclude: /node_modules/,
  55. use: [
  56. "vue-style-loader",
  57. {
  58. loader: "css-loader",
  59. options: {
  60. url: false
  61. }
  62. },
  63. "sass-loader"
  64. ]
  65. }
  66. ]
  67. }
  68. };