@modern-js/builder 2.9.0 → 2.11.0
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.
- package/CHANGELOG.md +62 -0
- package/dist/plugins/antd.d.ts +2 -0
- package/dist/plugins/antd.js +34 -0
- package/dist/plugins/assetsRetry.d.ts +2 -0
- package/dist/plugins/assetsRetry.js +48 -0
- package/dist/plugins/fileSize.js +8 -2
- package/dist/plugins/index.d.ts +2 -0
- package/dist/plugins/index.js +2 -0
- package/dist/plugins/splitChunks.d.ts +1 -1
- package/dist/plugins/splitChunks.js +5 -3
- package/dist/plugins/svg.js +4 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,67 @@
|
|
|
1
1
|
# @modern-js/builder
|
|
2
2
|
|
|
3
|
+
## 2.11.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- cfb058f: fix(builder): remove duplicated babel-plugin-import
|
|
8
|
+
|
|
9
|
+
fix(builder): 移除重复注册的 babel-plugin-import
|
|
10
|
+
|
|
11
|
+
- 55b07fd: feat(builder): support output.assetsRetry in rspack-provider
|
|
12
|
+
|
|
13
|
+
feat(builder): 在 rspack-provider 中支持 output.assetsRetry 配置能力
|
|
14
|
+
|
|
15
|
+
- 8b90c79: fix(builder): should preserve viewBox when minify svg
|
|
16
|
+
|
|
17
|
+
fix(builder): 修复压缩 svg 导致 viewBox 丢失的问题
|
|
18
|
+
|
|
19
|
+
- 3171c9d: feat(builder): print total file size after build
|
|
20
|
+
|
|
21
|
+
feat(builder): 构建后输出文件体积的总和
|
|
22
|
+
|
|
23
|
+
- cd1040f: feat: use generated default config objects instead of global objects
|
|
24
|
+
feat: 默认配置项使用动态生成替代全局对象
|
|
25
|
+
- b71cef1: feat(builder): support setting forceSplitting to be an object
|
|
26
|
+
|
|
27
|
+
feat(builder): 支持将 forceSplitting 设置为一个对象
|
|
28
|
+
|
|
29
|
+
- Updated dependencies [adcedad]
|
|
30
|
+
- Updated dependencies [cfb058f]
|
|
31
|
+
- Updated dependencies [a9c6083]
|
|
32
|
+
- Updated dependencies [55b07fd]
|
|
33
|
+
- Updated dependencies [0bd018b]
|
|
34
|
+
- Updated dependencies [8b90c79]
|
|
35
|
+
- Updated dependencies [a8c08c3]
|
|
36
|
+
- Updated dependencies [3aa318d]
|
|
37
|
+
- Updated dependencies [5d624fd]
|
|
38
|
+
- Updated dependencies [e2466a1]
|
|
39
|
+
- Updated dependencies [53b0a63]
|
|
40
|
+
- Updated dependencies [02bb383]
|
|
41
|
+
- Updated dependencies [381a3b9]
|
|
42
|
+
- Updated dependencies [7a60f10]
|
|
43
|
+
- Updated dependencies [cd1040f]
|
|
44
|
+
- Updated dependencies [e262a99]
|
|
45
|
+
- Updated dependencies [b71cef1]
|
|
46
|
+
- Updated dependencies [274b2e5]
|
|
47
|
+
- Updated dependencies [b9e1c54]
|
|
48
|
+
- @modern-js/builder-shared@2.11.0
|
|
49
|
+
- @modern-js/utils@2.11.0
|
|
50
|
+
|
|
51
|
+
## 2.10.0
|
|
52
|
+
|
|
53
|
+
### Patch Changes
|
|
54
|
+
|
|
55
|
+
- Updated dependencies [a8db932]
|
|
56
|
+
- Updated dependencies [92d247f]
|
|
57
|
+
- Updated dependencies [0da32d0]
|
|
58
|
+
- Updated dependencies [0d9962b]
|
|
59
|
+
- Updated dependencies [fbefa7e]
|
|
60
|
+
- Updated dependencies [4d54233]
|
|
61
|
+
- Updated dependencies [6db4864]
|
|
62
|
+
- @modern-js/builder-shared@2.10.0
|
|
63
|
+
- @modern-js/utils@2.10.0
|
|
64
|
+
|
|
3
65
|
## 2.9.0
|
|
4
66
|
|
|
5
67
|
### Patch Changes
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.builderAntdPlugin = void 0;
|
|
4
|
+
const utils_1 = require("@modern-js/utils");
|
|
5
|
+
const builderAntdPlugin = () => ({
|
|
6
|
+
name: `builder-plugin-antd`,
|
|
7
|
+
setup(api) {
|
|
8
|
+
api.modifyBuilderConfig(builderConfig => {
|
|
9
|
+
var _a, _b, _c;
|
|
10
|
+
(_a = builderConfig.source) !== null && _a !== void 0 ? _a : (builderConfig.source = {});
|
|
11
|
+
if ((_b = builderConfig.source.transformImport) === null || _b === void 0 ? void 0 : _b.some(item => item.libraryName === 'antd')) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const antdMajorVersion = (0, utils_1.getAntdMajorVersion)(api.context.rootPath);
|
|
15
|
+
// antd >= v5 no longer need babel-plugin-import
|
|
16
|
+
// see: https://ant.design/docs/react/migration-v5#remove-babel-plugin-import
|
|
17
|
+
if (antdMajorVersion && antdMajorVersion < 5) {
|
|
18
|
+
(_c = builderConfig.source) !== null && _c !== void 0 ? _c : (builderConfig.source = {});
|
|
19
|
+
builderConfig.source.transformImport = [
|
|
20
|
+
...(builderConfig.source.transformImport || []),
|
|
21
|
+
{
|
|
22
|
+
libraryName: 'antd',
|
|
23
|
+
libraryDirectory: useSSR(api.context.target) ? 'lib' : 'es',
|
|
24
|
+
style: true,
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
exports.builderAntdPlugin = builderAntdPlugin;
|
|
32
|
+
function useSSR(target) {
|
|
33
|
+
return (Array.isArray(target) ? target : [target]).some(item => ['node', 'service-worker'].includes(item));
|
|
34
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.builderPluginAssetsRetry = void 0;
|
|
27
|
+
const builder_shared_1 = require("@modern-js/builder-shared");
|
|
28
|
+
function builderPluginAssetsRetry() {
|
|
29
|
+
return {
|
|
30
|
+
name: 'builder-plugin-assets-retry',
|
|
31
|
+
setup(api) {
|
|
32
|
+
api.modifyBundlerChain(async (chain, { CHAIN_ID, target, HtmlPlugin }) => {
|
|
33
|
+
const config = api.getNormalizedConfig();
|
|
34
|
+
if (!config.output.assetsRetry || (0, builder_shared_1.isHtmlDisabled)(config, target)) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const { AssetsRetryPlugin } = await Promise.resolve().then(() => __importStar(require('@modern-js/builder-shared')));
|
|
38
|
+
chain.plugin(CHAIN_ID.PLUGIN.ASSETS_RETRY).use(AssetsRetryPlugin, [
|
|
39
|
+
{
|
|
40
|
+
...(config.output.assetsRetry || {}),
|
|
41
|
+
HtmlPlugin,
|
|
42
|
+
},
|
|
43
|
+
]);
|
|
44
|
+
});
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
exports.builderPluginAssetsRetry = builderPluginAssetsRetry;
|
package/dist/plugins/fileSize.js
CHANGED
|
@@ -57,7 +57,7 @@ async function printHeader(longestFileLength, longestLabelLength) {
|
|
|
57
57
|
}
|
|
58
58
|
return `${prev + curLabel} `;
|
|
59
59
|
}, ' ');
|
|
60
|
-
builder_shared_1.logger.log(chalk_1.default.bold
|
|
60
|
+
builder_shared_1.logger.log(chalk_1.default.bold.blue(headerRow));
|
|
61
61
|
}
|
|
62
62
|
async function printFileSizes(stats, distPath) {
|
|
63
63
|
const { fs, filesize, gzipSize, stripAnsi } = await Promise.resolve().then(() => __importStar(require('@modern-js/utils')));
|
|
@@ -98,11 +98,15 @@ async function printFileSizes(stats, distPath) {
|
|
|
98
98
|
const longestFileLength = Math.max(...assets.map(a => stripAnsi(a.folder + path_1.default.sep + a.name).length));
|
|
99
99
|
builder_shared_1.logger.info(`File sizes after production build:\n`);
|
|
100
100
|
printHeader(longestFileLength, longestLabelLength);
|
|
101
|
+
let totalSize = 0;
|
|
102
|
+
let totalGzipSize = 0;
|
|
101
103
|
assets.forEach(asset => {
|
|
102
104
|
let { sizeLabel } = asset;
|
|
103
105
|
const { name, folder, gzipSizeLabel } = asset;
|
|
104
106
|
const fileNameLength = stripAnsi(folder + path_1.default.sep + name).length;
|
|
105
107
|
const sizeLength = stripAnsi(sizeLabel).length;
|
|
108
|
+
totalSize += asset.size;
|
|
109
|
+
totalGzipSize += asset.gzippedSize;
|
|
106
110
|
if (sizeLength < longestLabelLength) {
|
|
107
111
|
const rightPadding = ' '.repeat(longestLabelLength - sizeLength);
|
|
108
112
|
sizeLabel += rightPadding;
|
|
@@ -114,7 +118,9 @@ async function printFileSizes(stats, distPath) {
|
|
|
114
118
|
}
|
|
115
119
|
builder_shared_1.logger.log(` ${fileNameLabel} ${sizeLabel} ${gzipSizeLabel}`);
|
|
116
120
|
});
|
|
117
|
-
|
|
121
|
+
const totalSizeLabel = `${chalk_1.default.bold.blue('Total size:')} ${filesize(totalSize)}`;
|
|
122
|
+
const gzippedSizeLabel = `${chalk_1.default.bold.blue('Gzipped size:')} ${filesize(totalGzipSize)}`;
|
|
123
|
+
builder_shared_1.logger.log(`\n ${totalSizeLabel}\n ${gzippedSizeLabel}\n`);
|
|
118
124
|
}
|
|
119
125
|
const builderPluginFileSize = () => ({
|
|
120
126
|
name: 'builder-plugin-file-size',
|
package/dist/plugins/index.d.ts
CHANGED
|
@@ -16,4 +16,6 @@ export declare const plugins: {
|
|
|
16
16
|
font: () => Promise<import("@modern-js/builder-shared").DefaultBuilderPlugin>;
|
|
17
17
|
image: () => Promise<import("@modern-js/builder-shared").DefaultBuilderPlugin>;
|
|
18
18
|
media: () => Promise<import("@modern-js/builder-shared").DefaultBuilderPlugin>;
|
|
19
|
+
assetsRetry: () => Promise<import("@modern-js/builder-shared").DefaultBuilderPlugin>;
|
|
20
|
+
antd: () => Promise<import("@modern-js/builder-shared").DefaultBuilderPlugin>;
|
|
19
21
|
};
|
package/dist/plugins/index.js
CHANGED
|
@@ -43,4 +43,6 @@ exports.plugins = {
|
|
|
43
43
|
font: () => Promise.resolve().then(() => __importStar(require('./asset'))).then(m => m.builderAssetPlugin('font', builder_shared_1.FONT_EXTENSIONS)),
|
|
44
44
|
image: () => Promise.resolve().then(() => __importStar(require('./asset'))).then(m => m.builderAssetPlugin('image', builder_shared_1.IMAGE_EXTENSIONS)),
|
|
45
45
|
media: () => Promise.resolve().then(() => __importStar(require('./asset'))).then(m => m.builderAssetPlugin('media', builder_shared_1.MEDIA_EXTENSIONS)),
|
|
46
|
+
assetsRetry: () => Promise.resolve().then(() => __importStar(require('./assetsRetry'))).then(m => m.builderPluginAssetsRetry()),
|
|
47
|
+
antd: () => Promise.resolve().then(() => __importStar(require('./antd'))).then(m => m.builderAntdPlugin()),
|
|
46
48
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DefaultBuilderPlugin } from '@modern-js/builder-shared';
|
|
1
|
+
import { type DefaultBuilderPlugin } from '@modern-js/builder-shared';
|
|
2
2
|
/** Expect to match path just like "./node_modules/react-router/" */
|
|
3
3
|
export declare const createDependenciesRegExp: (...dependencies: (string | RegExp)[]) => RegExp;
|
|
4
4
|
export declare function builderPluginSplitChunks(): DefaultBuilderPlugin;
|
|
@@ -31,10 +31,12 @@ const assert_1 = __importDefault(require("assert"));
|
|
|
31
31
|
const builder_shared_1 = require("@modern-js/builder-shared");
|
|
32
32
|
function getUserDefinedCacheGroups(forceSplitting) {
|
|
33
33
|
const cacheGroups = {};
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
const pairs = Array.isArray(forceSplitting)
|
|
35
|
+
? forceSplitting.map((regexp, index) => [`force-split-${index}`, regexp])
|
|
36
|
+
: Object.entries(forceSplitting);
|
|
37
|
+
pairs.forEach(([key, regexp]) => {
|
|
36
38
|
cacheGroups[key] = {
|
|
37
|
-
test:
|
|
39
|
+
test: regexp,
|
|
38
40
|
name: key,
|
|
39
41
|
chunks: 'all',
|
|
40
42
|
// Ignore minimum size, minimum chunks and maximum requests and always create chunks for user defined cache group.
|
package/dist/plugins/svg.js
CHANGED
|
@@ -57,7 +57,10 @@ const builderPluginSvg = () => {
|
|
|
57
57
|
.type('javascript/auto')
|
|
58
58
|
.use(CHAIN_ID.USE.SVGR)
|
|
59
59
|
.loader(require.resolve('@svgr/webpack'))
|
|
60
|
-
.options({
|
|
60
|
+
.options({
|
|
61
|
+
svgo: true,
|
|
62
|
+
svgoConfig: (0, builder_shared_1.getSvgoDefaultConfig)(),
|
|
63
|
+
})
|
|
61
64
|
.end()
|
|
62
65
|
.when(defaultExport === 'url', c => c
|
|
63
66
|
.use(CHAIN_ID.USE.URL)
|
package/package.json
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"engines": {
|
|
15
15
|
"node": ">=14.0.0"
|
|
16
16
|
},
|
|
17
|
-
"version": "2.
|
|
17
|
+
"version": "2.11.0",
|
|
18
18
|
"jsnext:source": "./src/index.ts",
|
|
19
19
|
"types": "./dist/index.d.ts",
|
|
20
20
|
"main": "./dist/index.js",
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"@svgr/webpack": "6.5.1",
|
|
30
|
-
"@modern-js/builder-shared": "2.
|
|
31
|
-
"@modern-js/utils": "2.
|
|
30
|
+
"@modern-js/builder-shared": "2.11.0",
|
|
31
|
+
"@modern-js/utils": "2.11.0"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@babel/core": "7.18.0",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"@types/babel__preset-env": "^7.9.2",
|
|
37
37
|
"@types/node": "^14",
|
|
38
38
|
"typescript": "^4",
|
|
39
|
-
"@scripts/vitest-config": "2.
|
|
39
|
+
"@scripts/vitest-config": "2.11.0"
|
|
40
40
|
},
|
|
41
41
|
"publishConfig": {
|
|
42
42
|
"registry": "https://registry.npmjs.org/",
|