vue.config.js 4.4 KB

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