resolveAppConfig.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. module.exports = (api, args, options) => {
  2. // respect inline entry
  3. if (args.entry && !options.pages) {
  4. api.configureWebpack(config => {
  5. config.entry = { app: api.resolve(args.entry) }
  6. })
  7. }
  8. const config = api.resolveChainableWebpackConfig()
  9. const targetDir = api.resolve(args.dest || options.outputDir)
  10. // respect inline build destination in copy plugin
  11. if (args.dest && config.plugins.has('copy')) {
  12. config.plugin('copy').tap(pluginArgs => {
  13. pluginArgs[0].patterns.to = targetDir
  14. return pluginArgs
  15. })
  16. }
  17. if (process.env.VUE_CLI_MODERN_MODE) {
  18. const ModernModePlugin = require('../../webpack/ModernModePlugin')
  19. const SafariNomoduleFixPlugin = require('../../webpack/SafariNomoduleFixPlugin')
  20. if (!args.moduleBuild) {
  21. // Inject plugin to extract build stats and write to disk
  22. config
  23. .plugin('modern-mode-legacy')
  24. .use(ModernModePlugin, [{
  25. targetDir,
  26. isModuleBuild: false
  27. }])
  28. } else {
  29. config
  30. .plugin('safari-nomodule-fix')
  31. .use(SafariNomoduleFixPlugin, [{
  32. // as we may generate an addition file asset (if Safari 10 fix is needed)
  33. // we need to provide the correct directory for that file to place in
  34. jsDirectory: require('../../util/getAssetPath')(options, 'js')
  35. }])
  36. // Inject plugin to read non-modern build stats and inject HTML
  37. config
  38. .plugin('modern-mode-modern')
  39. .use(ModernModePlugin, [{
  40. targetDir,
  41. isModuleBuild: true
  42. }])
  43. }
  44. }
  45. return api.resolveWebpackConfig(config)
  46. }