@umijs/bundler-esbuild 4.0.0-rc.20 → 4.0.0-rc.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,3 @@
1
1
  import { Plugin } from '@umijs/bundler-utils/compiled/esbuild';
2
- declare const _default: (options?: Record<string, string> | undefined) => Plugin;
2
+ declare const _default: (options?: Record<string, string>) => Plugin;
3
3
  export default _default;
@@ -0,0 +1,9 @@
1
+ interface Options {
2
+ alias: Record<string, string>;
3
+ }
4
+ export default class LessAliasPlugin {
5
+ private options;
6
+ constructor(options: Options);
7
+ install(less: LessStatic, pluginManager: Less.PluginManager): void;
8
+ }
9
+ export {};
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("@umijs/utils");
4
+ const utils_2 = require("./utils");
5
+ function matches(pattern, importee) {
6
+ if (pattern instanceof RegExp) {
7
+ return pattern.test(importee);
8
+ }
9
+ if (importee.length < pattern.length) {
10
+ return false;
11
+ }
12
+ if (importee === pattern) {
13
+ return true;
14
+ }
15
+ return importee.startsWith(pattern + '/');
16
+ }
17
+ class LessAliasPlugin {
18
+ constructor(options) {
19
+ this.options = options;
20
+ }
21
+ install(less, pluginManager) {
22
+ const alias = (0, utils_2.parseAlias)(this.options.alias);
23
+ function resolveId(filename) {
24
+ if (!filename) {
25
+ return null;
26
+ }
27
+ // First match is supposed to be the correct one
28
+ const matchedEntry = alias.find((entry) => matches(entry.find, filename));
29
+ if (!matchedEntry) {
30
+ return filename;
31
+ }
32
+ const resolvedPath = filename.replace(matchedEntry.find, matchedEntry.replacement);
33
+ return resolvedPath;
34
+ }
35
+ class AliasePlugin extends less.FileManager {
36
+ loadFile(filename, currentDirectory, options, enviroment) {
37
+ let resolved;
38
+ try {
39
+ resolved = resolveId(filename);
40
+ }
41
+ catch (error) {
42
+ utils_1.logger.error(error);
43
+ }
44
+ if (!resolved) {
45
+ const error = new Error(`[less-plugin-alias]: '${filename}' not found.`);
46
+ utils_1.logger.error(error);
47
+ throw error;
48
+ }
49
+ return super.loadFile(resolved, currentDirectory, options, enviroment);
50
+ }
51
+ loadFileSync(filename, currentDirectory, options, enviroment) {
52
+ let resolved;
53
+ try {
54
+ resolved = resolveId(filename);
55
+ }
56
+ catch (error) {
57
+ utils_1.logger.error(error);
58
+ }
59
+ if (!resolved) {
60
+ const error = new Error(`[less-plugin-alias]: '${filename}' not found.`);
61
+ utils_1.logger.error(error);
62
+ throw error;
63
+ }
64
+ return super.loadFileSync(resolved, currentDirectory, options, enviroment);
65
+ }
66
+ }
67
+ pluginManager.addFileManager(new AliasePlugin());
68
+ }
69
+ }
70
+ exports.default = LessAliasPlugin;
@@ -0,0 +1,4 @@
1
+ export interface Alias {
2
+ find: string | RegExp;
3
+ replacement: string;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ import { Alias } from './types';
2
+ export declare function parseAlias(alias: Record<string, string>): Alias[];
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseAlias = void 0;
4
+ function hoistAlias(alias) {
5
+ function getFinalReplacement(oAlias, replacement, index) {
6
+ //过滤重复配置,防止死循环
7
+ const newAlias = oAlias.slice();
8
+ newAlias.splice(index, 1);
9
+ //遍历找到需要深层替换的配置
10
+ for (let i = 0; i < newAlias.length; i++) {
11
+ if (newAlias[i].find.test(replacement)) {
12
+ replacement = replacement.replace(newAlias[i].find, newAlias[i].replacement);
13
+ return getFinalReplacement(newAlias, replacement, i);
14
+ }
15
+ }
16
+ return replacement;
17
+ }
18
+ alias.forEach((rule, index, alias) => {
19
+ rule.replacement = getFinalReplacement(alias, rule.replacement, index);
20
+ });
21
+ return alias;
22
+ }
23
+ function parseAlias(alias) {
24
+ const wholeAlias = [
25
+ // to support less-loader ~ for local deps, refer: https://github.com/vitejs/vite/issues/2185
26
+ { find: /^~/, replacement: '' },
27
+ ];
28
+ const userAlias = Object.entries(alias).map(([name, target]) => ({
29
+ find: new RegExp(`^~?${name.replace(/(?<!\$)$/, '(?=/|$)')}`),
30
+ replacement: target,
31
+ }));
32
+ wholeAlias.unshift(...userAlias);
33
+ return hoistAlias(wholeAlias);
34
+ }
35
+ exports.parseAlias = parseAlias;
@@ -7,10 +7,10 @@ exports.aliasLessImportPath = void 0;
7
7
  const less_1 = __importDefault(require("@umijs/bundler-utils/compiled/less"));
8
8
  const enhanced_resolve_1 = __importDefault(require("enhanced-resolve"));
9
9
  const fs_1 = require("fs");
10
- const less_plugin_aliases_1 = __importDefault(require("less-plugin-aliases"));
11
10
  const path_1 = __importDefault(require("path"));
12
11
  const postcssProcess_1 = require("../utils/postcssProcess");
13
12
  const sortByAffix_1 = require("../utils/sortByAffix");
13
+ const less_plugin_alias_1 = __importDefault(require("./less-plugin-alias"));
14
14
  const resolver = enhanced_resolve_1.default.create({
15
15
  mainFields: ['module', 'browser', 'main'],
16
16
  extensions: [
@@ -122,9 +122,8 @@ exports.default = (options = {}) => {
122
122
  try {
123
123
  const result = await less_1.default.render(content, {
124
124
  plugins: [
125
- new less_plugin_aliases_1.default({
126
- prefix: '~',
127
- aliases: alias || {},
125
+ new less_plugin_alias_1.default({
126
+ alias: alias || {},
128
127
  }),
129
128
  ],
130
129
  filename,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@umijs/bundler-esbuild",
3
- "version": "4.0.0-rc.20",
3
+ "version": "4.0.0-rc.23",
4
4
  "description": "@umijs/bundler-esbuild",
5
5
  "homepage": "https://github.com/umijs/umi-next/tree/master/packages/bundler-esbuild#readme",
6
6
  "bugs": "https://github.com/umijs/umi-next/issues",
@@ -24,10 +24,9 @@
24
24
  "test": "umi-scripts jest-turbo"
25
25
  },
26
26
  "dependencies": {
27
- "@umijs/bundler-utils": "4.0.0-rc.20",
28
- "@umijs/utils": "4.0.0-rc.20",
27
+ "@umijs/bundler-utils": "4.0.0-rc.23",
28
+ "@umijs/utils": "4.0.0-rc.23",
29
29
  "enhanced-resolve": "5.9.3",
30
- "less-plugin-aliases": "^1.0.3",
31
30
  "postcss": "^8.4.13",
32
31
  "postcss-flexbugs-fixes": "5.0.2",
33
32
  "postcss-preset-env": "7.5.0"