semi-extract-css-content-loader.ts 993 B

1234567891011121314151617181920212223242526
  1. /**
  2. *
  3. * @param {*} source
  4. * @returns string
  5. * @description
  6. * 此 loader 用于从 css-loader 处理后的 js 代码中获取纯 css 样式字符串
  7. * source 是经过 css-loader 处理后的 js 代码。要获取其中的 css 样式字符串,需经过如下操作:
  8. * 1. 通过识别module.id, "或者module.id, `做为开头,", ""]);或者`, ""]);做为结尾拿到中间的 css 代码
  9. * 2. 将 文本中的 \n 替换为空字符串
  10. */
  11. export default function semiExtractCssContentLoader(source: string) {
  12. const beginContent = 'module.id, ';
  13. const endContent = ', ""]);';
  14. let begInIndex = source.indexOf(beginContent);
  15. let endIndex = source.length;
  16. let result = source;
  17. if (begInIndex !== -1) {
  18. endIndex = source.lastIndexOf(endContent);
  19. if (endIndex !== -1) {
  20. result = source.slice(begInIndex + beginContent.length + 1, endIndex - 1);
  21. result = result.replace(/\\n/g, "");
  22. }
  23. }
  24. return result;
  25. }