index.js 4.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.uniMiniProgramPlugin = void 0;
  4. const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
  5. const uni_1 = require("./uni");
  6. const build_1 = require("./build");
  7. const configResolved_1 = require("./configResolved");
  8. const template_1 = require("./template");
  9. const pagesJson_1 = require("../plugins/pagesJson");
  10. const polyfill_1 = require("./polyfill");
  11. function uniMiniProgramPlugin(options) {
  12. const { vite: { alias, copyOptions }, template, style, } = options;
  13. let nvueCssEmitted = false;
  14. let resolvedConfig;
  15. (0, polyfill_1.rewriteCompileScriptOnce)();
  16. (0, polyfill_1.rewriteCompilerSfcParseOnce)();
  17. return {
  18. name: 'uni:mp',
  19. uni: (0, uni_1.uniOptions)({
  20. copyOptions,
  21. customElements: template.customElements,
  22. miniProgram: {
  23. event: template.event,
  24. class: template.class,
  25. filter: template.filter ? { lang: template.filter.lang } : undefined,
  26. directive: template.directive,
  27. lazyElement: template.lazyElement,
  28. component: template.component,
  29. emitFile: template_1.emitFile,
  30. slot: template.slot,
  31. },
  32. compilerOptions: template.compilerOptions,
  33. }),
  34. config() {
  35. return {
  36. base: '/',
  37. resolve: {
  38. alias: {
  39. vue: (0, uni_cli_shared_1.resolveBuiltIn)('@dcloudio/uni-mp-vue'),
  40. '@vue/devtools-api': (0, uni_cli_shared_1.resolveBuiltIn)('@dcloudio/uni-mp-vue'),
  41. 'vue-i18n': (0, uni_cli_shared_1.resolveVueI18nRuntime)(),
  42. ...alias,
  43. },
  44. preserveSymlinks: true,
  45. },
  46. css: {
  47. postcss: {
  48. plugins: (0, uni_cli_shared_1.initPostcssPlugin)({
  49. uniApp: (0, uni_cli_shared_1.parseRpx2UnitOnce)(process.env.UNI_INPUT_DIR, process.env.UNI_PLATFORM),
  50. }),
  51. },
  52. },
  53. optimizeDeps: {
  54. disabled: true,
  55. },
  56. build: (0, build_1.buildOptions)(),
  57. };
  58. },
  59. configResolved(config) {
  60. resolvedConfig = config;
  61. return (0, configResolved_1.createConfigResolved)(options)(config);
  62. },
  63. generateBundle() {
  64. if (template.filter) {
  65. const extname = template.filter.extname;
  66. const filterFiles = (0, template_1.getFilterFiles)(resolvedConfig, this.getModuleInfo);
  67. Object.keys(filterFiles).forEach((filename) => {
  68. const { code } = filterFiles[filename];
  69. this.emitFile({
  70. type: 'asset',
  71. fileName: filename + extname,
  72. source: code,
  73. });
  74. });
  75. }
  76. const templateFiles = (0, template_1.getTemplateFiles)(template);
  77. Object.keys(templateFiles).forEach((filename) => {
  78. this.emitFile({
  79. type: 'asset',
  80. fileName: filename + template.extname,
  81. source: templateFiles[filename],
  82. });
  83. });
  84. if (!nvueCssEmitted) {
  85. const nvueCssPaths = (0, pagesJson_1.getNVueCssPaths)(resolvedConfig);
  86. if (nvueCssPaths && nvueCssPaths.length) {
  87. nvueCssEmitted = true;
  88. this.emitFile({
  89. type: 'asset',
  90. fileName: 'nvue' + style.extname,
  91. source: (0, uni_cli_shared_1.genNVueCssCode)((0, uni_cli_shared_1.parseManifestJsonOnce)(process.env.UNI_INPUT_DIR)),
  92. });
  93. }
  94. }
  95. },
  96. };
  97. }
  98. exports.uniMiniProgramPlugin = uniMiniProgramPlugin;