pluginAssets.js 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. exports.createDepAssetPlugin = exports.createDepAssetExternalPlugin = void 0;
  7. const es_module_lexer_1 = require("es-module-lexer");
  8. const cssUtils_1 = require("../utils/cssUtils");
  9. const magic_string_1 = __importDefault(require("magic-string"));
  10. const utils_1 = require("../utils");
  11. const path_1 = __importDefault(require("path"));
  12. exports.createDepAssetExternalPlugin = (resolver) => ({
  13. name: 'vite:optimize-dep-assets-external',
  14. resolveId(id) {
  15. if (cssUtils_1.isCSSRequest(id) || resolver.isAssetRequest(id)) {
  16. return {
  17. id,
  18. external: true
  19. };
  20. }
  21. }
  22. });
  23. exports.createDepAssetPlugin = (resolver, root) => {
  24. return {
  25. name: 'vite:optimize-dep-assets',
  26. async transform(code, id) {
  27. if (id.endsWith('.js')) {
  28. await es_module_lexer_1.init;
  29. const [imports] = es_module_lexer_1.parse(code);
  30. if (imports.length) {
  31. let s;
  32. for (let i = 0; i < imports.length; i++) {
  33. const { s: start, e: end, d: dynamicIndex, ss: statementStart, se: statementEnd } = imports[i];
  34. if (dynamicIndex === -1) {
  35. const importee = code.slice(start, end);
  36. if (cssUtils_1.isCSSRequest(importee) || resolver.isAssetRequest(importee)) {
  37. // replace css/asset imports to deep imports to their original
  38. // location
  39. s = s || new magic_string_1.default(code);
  40. // #903 rollup-plugin-commonjs will inject proxy helper, it is unnecessary for assets
  41. if (importee.endsWith('?commonjs-proxy')) {
  42. s.remove(statementStart, statementEnd);
  43. continue;
  44. }
  45. const deepPath = resolver.fileToRequest(utils_1.bareImportRE.test(importee)
  46. ? utils_1.resolveFrom(root, importee)
  47. : path_1.default.resolve(path_1.default.dirname(id), importee));
  48. s.overwrite(start, end, deepPath);
  49. }
  50. }
  51. else {
  52. // ignore dynamic import
  53. }
  54. }
  55. if (s) {
  56. return s.toString();
  57. }
  58. }
  59. }
  60. return null;
  61. }
  62. };
  63. };
  64. //# sourceMappingURL=pluginAssets.js.map