vue.config.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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://192.168.92.128:8000",
  33. // target: "http://10.10.153.242:8000",
  34. // target: "http://192.168.192.131:8000",
  35. // target: "http://47.104.213.35",
  36. changeOrigin: true,
  37. // ws: true,//websocket支持
  38. secure: false
  39. },
  40. }
  41. },
  42. // webpack 配置,键值对象时会合并配置,为方法时会改写配置
  43. // https://cli.vuejs.org/guide/webpack.html#simple-configuration
  44. configureWebpack: (config) => {
  45. // 简单/基础配置,比如引入一个新插件
  46. //生产and测试环境
  47. let pluginsPro = [
  48. // Webpack包文件分析器(https://github.com/webpack-contrib/webpack-bundle-analyzer)
  49. new BundleAnalyzerPlugin(),
  50. ];
  51. //开发环境
  52. let pluginsDev = [
  53. // //移动端模拟开发者工具(https://github.com/diamont1001/vconsole-webpack-plugin https://github.com/Tencent/vConsole)
  54. // new vConsolePlugin({
  55. // filter: [], // 需要过滤的入口文件
  56. // enable: true // 发布代码前记得改回 false
  57. // }),
  58. ];
  59. if (process.env.NODE_ENV === 'production') { // 为生产环境修改配置...process.env.NODE_ENV !== 'development'
  60. config.plugins = [...config.plugins, ...pluginsPro];
  61. } else {
  62. // 为开发环境修改配置...
  63. config.plugins = [...config.plugins, ...pluginsDev];
  64. }
  65. },
  66. chainWebpack: (config) => {
  67. // 链式配置
  68. config.resolve.alias.set('styles', resolve('src/assets/styles'))
  69. .set("@", resolve("src"))
  70. // set preserveWhitespace
  71. config.module
  72. .rule('vue')
  73. .use('vue-loader')
  74. .loader('vue-loader')
  75. .tap(options => {
  76. options.compilerOptions.preserveWhitespace = true
  77. return options
  78. })
  79. .end()
  80. },
  81. css: {
  82. loaderOptions: {
  83. sass: {
  84. prependData: `@import "@/styles/variables.scss";`
  85. }
  86. }
  87. }
  88. // // css相关配置
  89. // css: {
  90. // // 启用 CSS modules
  91. // requireModuleExtension: true,
  92. // // 是否使用css分离插件 ExtractTextPlugin
  93. // extract: true,
  94. // // 开启 CSS source maps?
  95. // sourceMap: true,
  96. // // css预设器配置项
  97. // loaderOptions: {
  98. // // sass: {
  99. // // //设置css中引用文件的路径,引入通用使用的scss文件(如包含的@mixin)
  100. // // data: `
  101. // // $baseUrl: "/";
  102. // // @import '@/assets/scss/_common.scss';
  103. // // `
  104. // // }
  105. // },
  106. // },
  107. // 第三方插件配置 https://www.npmjs.com/package/vue-cli-plugin-style-resources-loader
  108. // pluginOptions: {
  109. // 'style-resources-loader': { //https://github.com/yenshih/style-resources-loader
  110. // preProcessor: 'scss', //声明类型
  111. // 'patterns': [
  112. // //path.resolve(__dirname, './src/assets/scss/_common.scss'),
  113. // ],
  114. // //injector: 'append'
  115. // }
  116. // }
  117. }