vue.config.js 4.3 KB

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