index.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. module.exports = (api, options) => {
  2. api.render('./template', {
  3. doesCompile: api.hasPlugin('babel') || api.hasPlugin('typescript'),
  4. useBabel: api.hasPlugin('babel')
  5. })
  6. if (options.vueVersion === '3') {
  7. api.extendPackage({
  8. dependencies: {
  9. 'vue': '^3.2.13'
  10. }
  11. })
  12. } else {
  13. api.extendPackage({
  14. dependencies: {
  15. 'vue': '^2.6.14'
  16. },
  17. devDependencies: {
  18. 'vue-template-compiler': '^2.6.14'
  19. }
  20. })
  21. }
  22. api.extendPackage({
  23. scripts: {
  24. 'serve': 'vue-cli-service serve',
  25. 'build': 'vue-cli-service build'
  26. },
  27. browserslist: [
  28. '> 1%',
  29. 'last 2 versions',
  30. 'not dead',
  31. ...(options.vueVersion === '3' ? ['not ie 11'] : [])
  32. ]
  33. })
  34. if (options.cssPreprocessor) {
  35. const deps = {
  36. sass: {
  37. sass: '^1.32.7',
  38. 'sass-loader': '^12.0.0'
  39. },
  40. 'dart-sass': {
  41. sass: '^1.32.7',
  42. 'sass-loader': '^12.0.0'
  43. },
  44. less: {
  45. 'less': '^4.0.0',
  46. 'less-loader': '^8.0.0'
  47. },
  48. stylus: {
  49. 'stylus': '^0.55.0',
  50. 'stylus-loader': '^6.1.0'
  51. }
  52. }
  53. api.extendPackage({
  54. devDependencies: deps[options.cssPreprocessor]
  55. })
  56. }
  57. // for v3 compatibility
  58. if (options.router && !api.hasPlugin('router')) {
  59. require('./router')(api, options, options)
  60. }
  61. // for v3 compatibility
  62. if (options.vuex && !api.hasPlugin('vuex')) {
  63. require('./vuex')(api, options, options)
  64. }
  65. // additional tooling configurations
  66. if (options.configs) {
  67. api.extendPackage(options.configs)
  68. }
  69. // Delete jsconfig.json when typescript
  70. if (api.hasPlugin('typescript')) {
  71. api.render((files) => delete files['jsconfig.json'])
  72. }
  73. }