plugin.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.insertBeforePlugin = exports.removePlugins = exports.replacePlugins = exports.injectCssPostPlugin = exports.injectCssPlugin = exports.injectAssetPlugin = void 0;
  4. const shared_1 = require("@vue/shared");
  5. const asset_1 = require("../plugins/vitejs/plugins/asset");
  6. const css_1 = require("../plugins/vitejs/plugins/css");
  7. function injectAssetPlugin(config, options) {
  8. replacePlugins([(0, asset_1.assetPlugin)(config, options)], config);
  9. }
  10. exports.injectAssetPlugin = injectAssetPlugin;
  11. function injectCssPlugin(config) {
  12. replacePlugins([(0, css_1.cssPlugin)(config)], config);
  13. }
  14. exports.injectCssPlugin = injectCssPlugin;
  15. function injectCssPostPlugin(config, newCssPostPlugin) {
  16. const oldCssPostPlugin = config.plugins.find((p) => p.name === newCssPostPlugin.name);
  17. // 直接覆盖原有方法,不能删除,替换,因为 unocss 在 pre 阶段已经获取到了旧的 css-post 插件对象
  18. if (oldCssPostPlugin) {
  19. (0, shared_1.extend)(oldCssPostPlugin, newCssPostPlugin);
  20. }
  21. }
  22. exports.injectCssPostPlugin = injectCssPostPlugin;
  23. function replacePlugins(plugins, config) {
  24. plugins.forEach((plugin) => {
  25. const index = config.plugins.findIndex((p) => p.name === plugin.name);
  26. if (index > -1) {
  27. ;
  28. config.plugins.splice(index, 1, plugin);
  29. }
  30. });
  31. }
  32. exports.replacePlugins = replacePlugins;
  33. function removePlugins(plugins, config) {
  34. if (!(0, shared_1.isArray)(plugins)) {
  35. plugins = [plugins];
  36. }
  37. plugins.forEach((name) => {
  38. const index = config.plugins.findIndex((p) => p.name === name);
  39. if (index > -1) {
  40. ;
  41. config.plugins.splice(index, 1);
  42. }
  43. });
  44. }
  45. exports.removePlugins = removePlugins;
  46. function insertBeforePlugin(plugin, before, config) {
  47. const index = config.plugins.findIndex((p) => p.name === before);
  48. if (index > -1) {
  49. ;
  50. config.plugins.splice(index, 0, plugin);
  51. }
  52. }
  53. exports.insertBeforePlugin = insertBeforePlugin;