vue.config.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. const cdnBaseUrl = 'https://cdn.bootcdn.net'
  2. const cdnConfig = [
  3. { name: 'vue', scope: 'Vue', js: `${cdnBaseUrl}/ajax/libs/vue/2.6.14/vue.min.js` },
  4. { name: 'vue-router', scope: 'VueRouter', js: `${cdnBaseUrl}/ajax/libs/vue-router/3.5.3/vue-router.min.js` },
  5. { name: 'vuex', scope: 'Vuex', js: `${cdnBaseUrl}/ajax/libs/vuex/3.6.2/vuex.min.js` },
  6. { name: 'element-ui', scope: 'ELEMENT', js: `${cdnBaseUrl}/ajax/libs/element-ui/2.15.6/index.min.js`, css: `${cdnBaseUrl}/ajax/libs/element-ui/2.15.6/theme-chalk/index.min.css` }
  7. ]
  8. module.exports = {
  9. devServer: {
  10. proxy: {
  11. '/api': {
  12. 'target': 'http://127.0.0.1:5555',
  13. 'ws': true,
  14. 'changeOrigin': true
  15. }
  16. }
  17. },
  18. chainWebpack(config) {
  19. if (process.env.NODE_ENV === 'production') {
  20. // config.externals({
  21. // 'vue': 'Vue',
  22. // 'vue-router': 'VueRouter',
  23. // 'vuex': 'Vuex'
  24. // })
  25. config.externals(cdnConfig.reduce((acc, el) => {
  26. acc[el.name] = el.scope
  27. return acc
  28. }, {}))
  29. config.plugin('html').tap(args => {
  30. args[0].cdn = {
  31. js: cdnConfig.map(el => el.js),
  32. css: cdnConfig.filter(el => el.css).map(el => el.css)
  33. }
  34. return args
  35. })
  36. }
  37. }
  38. }