vue.config.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. const path = require('path')
  2. const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
  3. function resolve(dir) {
  4. return path.join(__dirname, dir)
  5. }
  6. module.exports = {
  7. // 基本路径 vue-cli3.3+新版本使用 publicPath vue-cli3.3以下版本使用baseUrl
  8. publicPath: "./",
  9. /* 输出文件目录:在npm run build时,生成文件的目录名称 */
  10. outputDir: 'dist',
  11. /* 放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录 */
  12. assetsDir: "static",
  13. /* 是否在构建生产包时生成 sourceMap 文件,false将提高构建速度 */
  14. productionSourceMap: true,
  15. /* 默认情况下,生成的静态资源在它们的文件名中包含了 hash 以便更好的控制缓存,你可以通过将这个选项设为 false 来关闭文件名哈希。(false的时候就是让原来的文件名不改变) */
  16. filenameHashing: false,
  17. /* 代码保存时进行eslint检测 */
  18. lintOnSave: false,
  19. /* webpack-dev-server 相关配置 */
  20. devServer: {
  21. /* 自动打开浏览器 */
  22. open: false,
  23. host: '0.0.0.0',
  24. port: 8077,
  25. https: false,
  26. hotOnly: false,
  27. // before: require('./mock/mock-server.js')
  28. /* 使用代理 */
  29. proxy: {
  30. "/": {
  31. target: "http://47.108.130.28:8000",
  32. // target: "http://10.10.153.242:8000",
  33. // target: "http://192.168.192.131:8000",
  34. // target: "http://47.104.213.35",
  35. changeOrigin: true,
  36. // ws: true,//websocket支持
  37. secure: false
  38. },
  39. }
  40. },
  41. // webpack 配置,键值对象时会合并配置,为方法时会改写配置
  42. // https://cli.vuejs.org/guide/webpack.html#simple-configuration
  43. configureWebpack: (config) => {
  44. // 简单/基础配置,比如引入一个新插件
  45. //生产and测试环境
  46. let pluginsPro = [
  47. // Webpack包文件分析器(https://github.com/webpack-contrib/webpack-bundle-analyzer)
  48. new BundleAnalyzerPlugin(),
  49. ];
  50. //开发环境
  51. let pluginsDev = [
  52. // //移动端模拟开发者工具(https://github.com/diamont1001/vconsole-webpack-plugin https://github.com/Tencent/vConsole)
  53. // new vConsolePlugin({
  54. // filter: [], // 需要过滤的入口文件
  55. // enable: true // 发布代码前记得改回 false
  56. // }),
  57. ];
  58. if (process.env.NODE_ENV === 'production') { // 为生产环境修改配置...process.env.NODE_ENV !== 'development'
  59. config.plugins = [...config.plugins, ...pluginsPro];
  60. } else {
  61. // 为开发环境修改配置...
  62. config.plugins = [...config.plugins, ...pluginsDev];
  63. }
  64. },
  65. chainWebpack: (config) => {
  66. // 链式配置
  67. config.resolve.alias.set('styles', resolve('src/assets/styles'))
  68. .set("@", resolve("src"))
  69. // set preserveWhitespace
  70. config.module
  71. .rule('vue')
  72. .use('vue-loader')
  73. .loader('vue-loader')
  74. .tap(options => {
  75. options.compilerOptions.preserveWhitespace = true
  76. return options
  77. })
  78. .end()
  79. },
  80. css: {
  81. loaderOptions: {
  82. sass: {
  83. prependData: `@import "@/styles/variables.scss";`
  84. }
  85. }
  86. }
  87. // // css相关配置
  88. // css: {
  89. // // 启用 CSS modules
  90. // requireModuleExtension: true,
  91. // // 是否使用css分离插件 ExtractTextPlugin
  92. // extract: true,
  93. // // 开启 CSS source maps?
  94. // sourceMap: true,
  95. // // css预设器配置项
  96. // loaderOptions: {
  97. // // sass: {
  98. // // //设置css中引用文件的路径,引入通用使用的scss文件(如包含的@mixin)
  99. // // data: `
  100. // // $baseUrl: "/";
  101. // // @import '@/assets/scss/_common.scss';
  102. // // `
  103. // // }
  104. // },
  105. // },
  106. // 第三方插件配置 https://www.npmjs.com/package/vue-cli-plugin-style-resources-loader
  107. // pluginOptions: {
  108. // 'style-resources-loader': { //https://github.com/yenshih/style-resources-loader
  109. // preProcessor: 'scss', //声明类型
  110. // 'patterns': [
  111. // //path.resolve(__dirname, './src/assets/scss/_common.scss'),
  112. // ],
  113. // //injector: 'append'
  114. // }
  115. // }
  116. }