@qse/edu-scripts 1.13.7 → 1.13.8
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 +10 -1
- package/app.d.ts +10 -0
- package/lib/auto-refactor.js +88 -95
- package/lib/build.js +33 -36
- package/lib/cli.js +64 -61
- package/lib/commit-dist.js +40 -54
- package/lib/config/babel.dependencies.js +41 -39
- package/lib/config/babel.js +82 -55
- package/lib/config/paths.js +27 -30
- package/lib/config/plugins/postcss-safe-area.js +12 -12
- package/lib/config/webpackConfig.js +360 -325
- package/lib/config/webpackDevServerConfig.js +20 -29
- package/lib/deploy.js +58 -100
- package/lib/generator.js +49 -81
- package/lib/index.js +26 -9
- package/lib/start.js +16 -22
- package/lib/utils/FileSizeReporter.js +45 -56
- package/lib/utils/appConfig.js +12 -13
- package/lib/utils/beforeStart.js +35 -35
- package/lib/utils/changeDeployVersion.js +36 -65
- package/lib/utils/defineConfig.js +27 -5
- package/lib/utils/exec.js +5 -9
- package/lib/utils/getConfig.js +6 -7
- package/lib/utils/getOverride.js +13 -17
- package/package.json +28 -29
- package/src/config/webpackConfig.js +9 -2
- package/src/utils/defineConfig.ts +1 -1
|
@@ -1,96 +1,85 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
var fs = require('fs');
|
|
11
|
-
var path = require('path');
|
|
12
|
-
var chalk = require('chalk');
|
|
13
|
-
var filesize = require('filesize');
|
|
14
|
-
var recursive = require('recursive-readdir');
|
|
15
|
-
var stripAnsi = require('strip-ansi');
|
|
16
|
-
var gzipSize = require('gzip-size').sync;
|
|
1
|
+
// src/utils/FileSizeReporter.js
|
|
2
|
+
var fs = require("fs");
|
|
3
|
+
var path = require("path");
|
|
4
|
+
var chalk = require("chalk");
|
|
5
|
+
var filesize = require("filesize");
|
|
6
|
+
var recursive = require("recursive-readdir");
|
|
7
|
+
var stripAnsi = require("strip-ansi");
|
|
8
|
+
var gzipSize = require("gzip-size").sync;
|
|
17
9
|
function canReadAsset(asset) {
|
|
18
10
|
return /\.(js|css)$/.test(asset) && !/service-worker\.js/.test(asset) && !/precache-manifest\.[0-9a-f]+\.js/.test(asset);
|
|
19
11
|
}
|
|
20
|
-
|
|
21
|
-
// Prints a detailed summary of build files.
|
|
22
12
|
function printFileSizesAfterBuild(webpackStats, previousSizeMap, buildFolder, maxBundleGzipSize, maxChunkGzipSize) {
|
|
23
13
|
var root = previousSizeMap.root;
|
|
24
14
|
var sizes = previousSizeMap.sizes;
|
|
25
|
-
var assets = (webpackStats.stats || [webpackStats]).map(
|
|
26
|
-
all: false,
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
})).reduce((single, all) => all.concat(single), []);
|
|
15
|
+
var assets = (webpackStats.stats || [webpackStats]).map(
|
|
16
|
+
(stats) => stats.toJson({ all: false, assets: true }).assets.filter((asset) => canReadAsset(asset.name)).map((asset) => {
|
|
17
|
+
var fileContents = fs.readFileSync(path.join(root, asset.name));
|
|
18
|
+
var size = gzipSize(fileContents);
|
|
19
|
+
var previousSize = sizes[removeFileNameHash(root, asset.name)];
|
|
20
|
+
var difference = getDifferenceLabel(size, previousSize);
|
|
21
|
+
return {
|
|
22
|
+
folder: path.join(path.basename(buildFolder), path.dirname(asset.name)),
|
|
23
|
+
name: path.basename(asset.name),
|
|
24
|
+
size,
|
|
25
|
+
sizeLabel: filesize(size) + (difference ? " (" + difference + ")" : "")
|
|
26
|
+
};
|
|
27
|
+
})
|
|
28
|
+
).reduce((single, all) => all.concat(single), []);
|
|
40
29
|
assets.sort((a, b) => b.size - a.size);
|
|
41
|
-
|
|
42
|
-
// move main file to first
|
|
43
|
-
var mainAssetIdx = assets.findIndex(asset => /_\d+\.\d+\.\d+\./.test(asset.name));
|
|
30
|
+
var mainAssetIdx = assets.findIndex((asset) => /_\d+\.\d+\.\d+\./.test(asset.name));
|
|
44
31
|
assets.unshift(assets.splice(mainAssetIdx, 1)[0]);
|
|
45
|
-
var longestSizeLabelLength = Math.max.apply(
|
|
32
|
+
var longestSizeLabelLength = Math.max.apply(
|
|
33
|
+
null,
|
|
34
|
+
assets.map((a) => stripAnsi(a.sizeLabel).length)
|
|
35
|
+
);
|
|
46
36
|
var suggestBundleSplitting = false;
|
|
47
|
-
assets.forEach(asset => {
|
|
37
|
+
assets.forEach((asset) => {
|
|
48
38
|
var sizeLabel = asset.sizeLabel;
|
|
49
39
|
var sizeLength = stripAnsi(sizeLabel).length;
|
|
50
40
|
if (sizeLength < longestSizeLabelLength) {
|
|
51
|
-
var rightPadding =
|
|
41
|
+
var rightPadding = " ".repeat(longestSizeLabelLength - sizeLength);
|
|
52
42
|
sizeLabel += rightPadding;
|
|
53
43
|
}
|
|
54
44
|
var isMainBundle = /_\d+\.\d+\.\d+\./.test(asset.name);
|
|
55
45
|
var maxRecommendedSize = isMainBundle ? maxBundleGzipSize : maxChunkGzipSize;
|
|
56
46
|
var isLarge = maxRecommendedSize && asset.size > maxRecommendedSize;
|
|
57
|
-
if (isLarge && path.extname(asset.name) ===
|
|
47
|
+
if (isLarge && path.extname(asset.name) === ".js") {
|
|
58
48
|
suggestBundleSplitting = true;
|
|
59
49
|
}
|
|
60
|
-
console.log(
|
|
50
|
+
console.log(
|
|
51
|
+
" " + (isLarge ? chalk.yellow(sizeLabel) : sizeLabel) + " " + chalk.dim(asset.folder + path.sep) + chalk.cyan(asset.name)
|
|
52
|
+
);
|
|
61
53
|
if (isMainBundle) {
|
|
62
|
-
console.log(
|
|
54
|
+
console.log("");
|
|
63
55
|
}
|
|
64
56
|
});
|
|
65
57
|
if (suggestBundleSplitting) {
|
|
66
58
|
console.log();
|
|
67
|
-
console.log(chalk.yellow(
|
|
68
|
-
console.log(chalk.yellow(
|
|
69
|
-
console.log(chalk.yellow(
|
|
59
|
+
console.log(chalk.yellow("产物大小明显大于推荐的大小 (主文件 30k, chunk 1M, 黄色标注为偏大)"));
|
|
60
|
+
console.log(chalk.yellow("考虑下使用代码分割解决"));
|
|
61
|
+
console.log(chalk.yellow("也可以使用 npm run analyze 命令分析产物"));
|
|
70
62
|
}
|
|
71
63
|
}
|
|
72
64
|
function removeFileNameHash(buildFolder, fileName) {
|
|
73
|
-
return fileName.replace(buildFolder,
|
|
65
|
+
return fileName.replace(buildFolder, "").replace(/\\/g, "/").replace(/\/\d+\.\d+\.\d+\//, "/").replace(/\/?(.*)(\.[0-9a-f]+)(\.chunk)?(\.js|\.css)/, (match, p1, p2, p3, p4) => p1 + p4);
|
|
74
66
|
}
|
|
75
|
-
|
|
76
|
-
// Input: 1024, 2048
|
|
77
|
-
// Output: "(+1 KB)"
|
|
78
67
|
function getDifferenceLabel(currentSize, previousSize) {
|
|
79
68
|
var FIFTY_KILOBYTES = 1024 * 50;
|
|
80
69
|
var difference = currentSize - previousSize;
|
|
81
70
|
var fileSize = !Number.isNaN(difference) ? filesize(difference) : 0;
|
|
82
71
|
if (difference >= FIFTY_KILOBYTES) {
|
|
83
|
-
return chalk.red(
|
|
72
|
+
return chalk.red("+" + fileSize);
|
|
84
73
|
} else if (difference < FIFTY_KILOBYTES && difference > 0) {
|
|
85
|
-
return chalk.yellow(
|
|
74
|
+
return chalk.yellow("+" + fileSize);
|
|
86
75
|
} else if (difference < 0) {
|
|
87
76
|
return chalk.green(fileSize);
|
|
88
77
|
} else {
|
|
89
|
-
return
|
|
78
|
+
return "";
|
|
90
79
|
}
|
|
91
80
|
}
|
|
92
81
|
function measureFileSizesBeforeBuild(buildFolder) {
|
|
93
|
-
return new Promise(resolve => {
|
|
82
|
+
return new Promise((resolve) => {
|
|
94
83
|
recursive(buildFolder, (err, fileNames) => {
|
|
95
84
|
var sizes;
|
|
96
85
|
if (!err && fileNames) {
|
|
@@ -109,6 +98,6 @@ function measureFileSizesBeforeBuild(buildFolder) {
|
|
|
109
98
|
});
|
|
110
99
|
}
|
|
111
100
|
module.exports = {
|
|
112
|
-
measureFileSizesBeforeBuild
|
|
113
|
-
printFileSizesAfterBuild
|
|
114
|
-
};
|
|
101
|
+
measureFileSizesBeforeBuild,
|
|
102
|
+
printFileSizesAfterBuild
|
|
103
|
+
};
|
package/lib/utils/appConfig.js
CHANGED
|
@@ -1,33 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const edu = appPkg.edu || {};
|
|
1
|
+
// src/utils/appConfig.js
|
|
2
|
+
var paths = require("../config/paths");
|
|
3
|
+
var appPkg = require(paths.package);
|
|
4
|
+
var fs = require("fs");
|
|
5
|
+
var edu = appPkg.edu || {};
|
|
7
6
|
if (edu.single || edu.mainProject) {
|
|
8
7
|
if (edu.single) {
|
|
9
|
-
edu.mode =
|
|
8
|
+
edu.mode = "single";
|
|
10
9
|
delete edu.single;
|
|
11
10
|
}
|
|
12
11
|
if (edu.mainProject) {
|
|
13
|
-
edu.mode =
|
|
12
|
+
edu.mode = "main";
|
|
14
13
|
delete edu.mainProject;
|
|
15
14
|
}
|
|
16
|
-
fs.writeFileSync(paths.package, JSON.stringify(appPkg, null, 2),
|
|
15
|
+
fs.writeFileSync(paths.package, JSON.stringify(appPkg, null, 2), "utf-8");
|
|
17
16
|
}
|
|
18
|
-
|
|
17
|
+
var appConfig = {
|
|
19
18
|
/** @type {'main'|'single'} */
|
|
20
19
|
get mode() {
|
|
21
20
|
return edu.mode;
|
|
22
21
|
},
|
|
23
22
|
get mainProject() {
|
|
24
|
-
return this.mode ===
|
|
23
|
+
return this.mode === "main";
|
|
25
24
|
},
|
|
26
25
|
get single() {
|
|
27
|
-
return this.mode ===
|
|
26
|
+
return this.mode === "single";
|
|
28
27
|
},
|
|
29
28
|
get grayscale() {
|
|
30
29
|
return !!edu.grayscale;
|
|
31
30
|
}
|
|
32
31
|
};
|
|
33
|
-
module.exports = appConfig;
|
|
32
|
+
module.exports = appConfig;
|
package/lib/utils/beforeStart.js
CHANGED
|
@@ -1,62 +1,62 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const notifier = updateNotifier({
|
|
1
|
+
// src/utils/beforeStart.js
|
|
2
|
+
var fs = require("fs");
|
|
3
|
+
var paths = require("../config/paths");
|
|
4
|
+
var chalk = require("chalk");
|
|
5
|
+
var pkg = require("../../package.json");
|
|
6
|
+
var updateNotifier = require("update-notifier");
|
|
7
|
+
var semver = require("semver");
|
|
8
|
+
var notifier = updateNotifier({
|
|
10
9
|
pkg,
|
|
11
10
|
shouldNotifyInNpmScript: true,
|
|
12
|
-
updateCheckInterval:
|
|
11
|
+
updateCheckInterval: 1e3 * 60
|
|
12
|
+
// 时刻保持更新
|
|
13
13
|
});
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
notifier.notify({
|
|
18
|
-
message
|
|
19
|
-
});
|
|
14
|
+
if (notifier.update && ["minor", "major"].includes(notifier.update.type)) {
|
|
15
|
+
const message = "发现新版本 " + chalk.dim("{currentVersion}") + chalk.reset(" → ") + chalk.green("{latestVersion}") + " \n运行 " + chalk.cyan("{updateCommand}") + " 进行更新\n\n" + chalk.bold.red("请始终保持最新版本\n") + "更新日志: " + chalk.green(`${pkg.homepage}#/changelog`);
|
|
16
|
+
notifier.notify({ message });
|
|
20
17
|
process.exit(1);
|
|
21
18
|
}
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
var appPkg = require(paths.package);
|
|
20
|
+
var appConfig = require("./appConfig");
|
|
24
21
|
if (semver.valid(appPkg.version) === null) {
|
|
25
|
-
console.log(
|
|
22
|
+
console.log(
|
|
23
|
+
chalk.red(`package.version 不符合 semver 规范 https://docs.npmjs.com/about-semantic-versioning`)
|
|
24
|
+
);
|
|
26
25
|
process.exit(1);
|
|
27
26
|
}
|
|
28
27
|
switch (appConfig.mode) {
|
|
29
|
-
case
|
|
30
|
-
console.log(chalk.bgMagenta(
|
|
28
|
+
case "main":
|
|
29
|
+
console.log(chalk.bgMagenta("正在使用教育主工程模式"));
|
|
31
30
|
break;
|
|
32
|
-
case
|
|
33
|
-
console.log(chalk.bgMagenta(
|
|
31
|
+
case "single":
|
|
32
|
+
console.log(chalk.bgMagenta("正在使用独立项目模式"));
|
|
34
33
|
break;
|
|
35
34
|
default:
|
|
36
|
-
console.log(chalk.bgMagenta(
|
|
35
|
+
console.log(chalk.bgMagenta("正在使用教育集成模式"));
|
|
37
36
|
break;
|
|
38
37
|
}
|
|
39
38
|
if (appConfig.grayscale) {
|
|
40
|
-
console.log(chalk.bgYellow(
|
|
39
|
+
console.log(chalk.bgYellow("正在使用灰度测试模式"));
|
|
41
40
|
}
|
|
42
41
|
if (!(appConfig.single || appConfig.mainProject)) {
|
|
43
42
|
if (fs.existsSync(paths.static)) {
|
|
44
|
-
console.log(chalk.bgYellow(
|
|
43
|
+
console.log(chalk.bgYellow("教育集成工程不能含有 public/static, 现已自动删除"));
|
|
45
44
|
try {
|
|
46
|
-
fs.rmSync(paths.static, {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
} catch (e) {}
|
|
45
|
+
fs.rmSync(paths.static, { recursive: true });
|
|
46
|
+
} catch (e) {
|
|
47
|
+
}
|
|
50
48
|
}
|
|
51
49
|
}
|
|
52
|
-
if (!fs.existsSync(paths.public) && !process.argv.includes(
|
|
50
|
+
if (!fs.existsSync(paths.public) && !process.argv.includes("auto-refactor")) {
|
|
53
51
|
console.log(chalk.red(`public 文件夹不存在,请先按文档改造项目`));
|
|
54
52
|
console.log(`文档: ${chalk.underline(pkg.homepage)}`);
|
|
55
|
-
console.log(
|
|
53
|
+
console.log(`
|
|
54
|
+
使用 ${chalk.green("npx edu-scripts auto-refactor")} 自动改造
|
|
55
|
+
`);
|
|
56
56
|
process.exit(0);
|
|
57
57
|
}
|
|
58
58
|
if (appPkg.browserslist) {
|
|
59
|
-
console.log(chalk.yellow(
|
|
59
|
+
console.log(chalk.yellow("已删除 package.json 中 browserslist,该值由内部自动控制\n"));
|
|
60
60
|
delete appPkg.browserslist;
|
|
61
|
-
fs.writeFileSync(paths.package, JSON.stringify(appPkg, null, 2),
|
|
62
|
-
}
|
|
61
|
+
fs.writeFileSync(paths.package, JSON.stringify(appPkg, null, 2), "utf-8");
|
|
62
|
+
}
|
|
@@ -1,78 +1,50 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
} = require(
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const {
|
|
10
|
-
format
|
|
11
|
-
} = require('prettier');
|
|
12
|
-
|
|
13
|
-
// ver.js 中定义模块的数组
|
|
14
|
-
const TARGET_IDENTIFIER_NAME = 'project_apiArr';
|
|
15
|
-
const MODULE_IDENTIFIER_NAME = 'module';
|
|
1
|
+
// src/utils/changeDeployVersion.js
|
|
2
|
+
var t = require("@babel/types");
|
|
3
|
+
var { parse } = require("@babel/parser");
|
|
4
|
+
var generate = require("@babel/generator").default;
|
|
5
|
+
var traverse = require("@babel/traverse").default;
|
|
6
|
+
var { format } = require("prettier");
|
|
7
|
+
var TARGET_IDENTIFIER_NAME = "project_apiArr";
|
|
8
|
+
var MODULE_IDENTIFIER_NAME = "module";
|
|
16
9
|
function changeDeployVersion(code, pkg) {
|
|
17
|
-
const {
|
|
18
|
-
name,
|
|
19
|
-
version,
|
|
20
|
-
grayscale
|
|
21
|
-
} = pkg;
|
|
10
|
+
const { name, version, grayscale } = pkg;
|
|
22
11
|
let ast;
|
|
23
12
|
try {
|
|
24
13
|
ast = parse(code);
|
|
25
14
|
} catch (error) {
|
|
26
15
|
throw new Error(`代码解析错误: ${error.message}`);
|
|
27
16
|
}
|
|
28
|
-
const keyName = grayscale ?
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* @return {babel.NodePath<t.VariableDeclarator> | undefined}
|
|
32
|
-
*/
|
|
33
|
-
function findTargetDeclarator(ast) {
|
|
17
|
+
const keyName = grayscale ? "grayscale" : "main";
|
|
18
|
+
function findTargetDeclarator(ast2) {
|
|
34
19
|
let res;
|
|
35
|
-
traverse(
|
|
20
|
+
traverse(ast2, {
|
|
36
21
|
VariableDeclarator(path) {
|
|
37
|
-
if (t.isIdentifier(path.node.id, {
|
|
38
|
-
name: TARGET_IDENTIFIER_NAME
|
|
39
|
-
}) && t.isArrayExpression(path.node.init)) {
|
|
22
|
+
if (t.isIdentifier(path.node.id, { name: TARGET_IDENTIFIER_NAME }) && t.isArrayExpression(path.node.init)) {
|
|
40
23
|
res = path;
|
|
41
24
|
}
|
|
42
25
|
}
|
|
43
26
|
});
|
|
44
27
|
return res;
|
|
45
28
|
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* @param {babel.NodePath<t.VariableDeclarator>} path
|
|
49
|
-
* @return {babel.NodePath<t.ObjectExpression> | undefined}
|
|
50
|
-
*/
|
|
51
29
|
function findModuleObject(path) {
|
|
52
30
|
let res;
|
|
53
31
|
path.traverse({
|
|
54
|
-
ObjectExpression(
|
|
55
|
-
if (
|
|
56
|
-
name: MODULE_IDENTIFIER_NAME
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}))) {
|
|
60
|
-
res = path;
|
|
32
|
+
ObjectExpression(path2) {
|
|
33
|
+
if (path2.node.properties.some(
|
|
34
|
+
(node) => t.isIdentifier(node.key, { name: MODULE_IDENTIFIER_NAME }) && t.isLiteral(node.value, { value: name })
|
|
35
|
+
)) {
|
|
36
|
+
res = path2;
|
|
61
37
|
}
|
|
62
38
|
}
|
|
63
39
|
});
|
|
64
40
|
return res;
|
|
65
41
|
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* @param {babel.NodePath<t.ObjectExpression>} path
|
|
69
|
-
*/
|
|
70
42
|
function modifyModuleVersion(path) {
|
|
71
43
|
let hasModify = false;
|
|
72
44
|
path.traverse({
|
|
73
|
-
Property(
|
|
74
|
-
if (
|
|
75
|
-
|
|
45
|
+
Property(path2) {
|
|
46
|
+
if (path2.node.key.name === keyName) {
|
|
47
|
+
path2.node.value.value = version;
|
|
76
48
|
hasModify = true;
|
|
77
49
|
}
|
|
78
50
|
}
|
|
@@ -81,26 +53,27 @@ function changeDeployVersion(code, pkg) {
|
|
|
81
53
|
path.node.properties.push(t.objectProperty(t.identifier(keyName), t.stringLiteral(version)));
|
|
82
54
|
}
|
|
83
55
|
}
|
|
84
|
-
/**
|
|
85
|
-
* @param {babel.NodePath<t.ObjectExpression>} path
|
|
86
|
-
*/
|
|
87
56
|
function deleteModuleComments(path) {
|
|
88
57
|
path.traverse({
|
|
89
|
-
ObjectExpression(
|
|
90
|
-
delete
|
|
58
|
+
ObjectExpression(path2) {
|
|
59
|
+
delete path2.node.leadingComments;
|
|
91
60
|
}
|
|
92
61
|
});
|
|
93
62
|
}
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* @param {babel.NodePath<t.VariableDeclarator>} path
|
|
97
|
-
*/
|
|
98
63
|
function addModuleToTarget(path) {
|
|
99
64
|
const elements = path.node.init.elements;
|
|
100
|
-
elements.splice(
|
|
65
|
+
elements.splice(
|
|
66
|
+
elements.length - 2,
|
|
67
|
+
0,
|
|
68
|
+
t.objectExpression([
|
|
69
|
+
t.objectProperty(t.identifier(MODULE_IDENTIFIER_NAME), t.stringLiteral(name)),
|
|
70
|
+
t.objectProperty(t.identifier(keyName), t.stringLiteral(version))
|
|
71
|
+
])
|
|
72
|
+
);
|
|
101
73
|
}
|
|
102
74
|
const targetPath = findTargetDeclarator(ast);
|
|
103
|
-
if (!targetPath)
|
|
75
|
+
if (!targetPath)
|
|
76
|
+
throw new Error(`ver.js 不合规范,未找到参数 ${TARGET_IDENTIFIER_NAME}`);
|
|
104
77
|
const moduleObjPath = findModuleObject(targetPath);
|
|
105
78
|
if (moduleObjPath) {
|
|
106
79
|
modifyModuleVersion(moduleObjPath);
|
|
@@ -108,11 +81,9 @@ function changeDeployVersion(code, pkg) {
|
|
|
108
81
|
addModuleToTarget(targetPath);
|
|
109
82
|
}
|
|
110
83
|
deleteModuleComments(targetPath);
|
|
111
|
-
return format(generate(ast, {
|
|
112
|
-
|
|
113
|
-
}).code, {
|
|
114
|
-
parser: 'babel',
|
|
84
|
+
return format(generate(ast, { minified: true }).code, {
|
|
85
|
+
parser: "babel",
|
|
115
86
|
printWidth: 120
|
|
116
87
|
});
|
|
117
88
|
}
|
|
118
|
-
module.exports = changeDeployVersion;
|
|
89
|
+
module.exports = changeDeployVersion;
|
|
@@ -1,9 +1,31 @@
|
|
|
1
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
2
18
|
|
|
3
|
-
|
|
4
|
-
|
|
19
|
+
// src/utils/defineConfig.ts
|
|
20
|
+
var defineConfig_exports = {};
|
|
21
|
+
__export(defineConfig_exports, {
|
|
22
|
+
defineConfig: () => defineConfig
|
|
5
23
|
});
|
|
6
|
-
exports
|
|
24
|
+
module.exports = __toCommonJS(defineConfig_exports);
|
|
7
25
|
function defineConfig(config) {
|
|
8
26
|
return config;
|
|
9
|
-
}
|
|
27
|
+
}
|
|
28
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
29
|
+
0 && (module.exports = {
|
|
30
|
+
defineConfig
|
|
31
|
+
});
|
package/lib/utils/exec.js
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const exec = cmd => {
|
|
1
|
+
// src/utils/exec.js
|
|
2
|
+
var cp = require("child_process");
|
|
3
|
+
var exec = (cmd) => {
|
|
5
4
|
console.log(`> ${cmd}`);
|
|
6
|
-
return cp.execSync(cmd, {
|
|
7
|
-
stdio: 'inherit',
|
|
8
|
-
encoding: 'utf-8'
|
|
9
|
-
});
|
|
5
|
+
return cp.execSync(cmd, { stdio: "inherit", encoding: "utf-8" });
|
|
10
6
|
};
|
|
11
|
-
module.exports = exec;
|
|
7
|
+
module.exports = exec;
|
package/lib/utils/getConfig.js
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const getOverride = require('./getOverride');
|
|
1
|
+
// src/utils/getConfig.js
|
|
2
|
+
var getWebpackConfig = require("../config/webpackConfig");
|
|
3
|
+
var getWebpackDevServerConfig = require("../config/webpackDevServerConfig");
|
|
4
|
+
var getOverride = require("./getOverride");
|
|
6
5
|
function getConfig(args) {
|
|
7
6
|
const override = getOverride();
|
|
8
7
|
let webpackConfig = getWebpackConfig(args, override);
|
|
9
8
|
if (override.webpack) {
|
|
10
9
|
webpackConfig = override.webpack(webpackConfig) || webpackConfig;
|
|
11
10
|
}
|
|
12
|
-
if (process.env.NODE_ENV ===
|
|
11
|
+
if (process.env.NODE_ENV === "development") {
|
|
13
12
|
let devServerConfig = getWebpackDevServerConfig(args, override);
|
|
14
13
|
if (override.devServer) {
|
|
15
14
|
devServerConfig = override.devServer(devServerConfig) || devServerConfig;
|
|
@@ -18,4 +17,4 @@ function getConfig(args) {
|
|
|
18
17
|
}
|
|
19
18
|
return webpackConfig;
|
|
20
19
|
}
|
|
21
|
-
module.exports = getConfig;
|
|
20
|
+
module.exports = getConfig;
|
package/lib/utils/getOverride.js
CHANGED
|
@@ -1,28 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
/** @type {import('./defineConfig').Config} */
|
|
7
|
-
const defaultOverride = {
|
|
1
|
+
// src/utils/getOverride.js
|
|
2
|
+
var fs = require("fs");
|
|
3
|
+
var paths = require("../config/paths");
|
|
4
|
+
var defaultOverride = {
|
|
8
5
|
transformNodeModules: true,
|
|
9
|
-
minify:
|
|
6
|
+
minify: "esbuild",
|
|
10
7
|
proxy: [],
|
|
11
8
|
extraPostCSSPlugins: []
|
|
12
9
|
};
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* @return {import('./defineConfig').Config}
|
|
17
|
-
*/
|
|
10
|
+
var override = null;
|
|
18
11
|
module.exports = function getOverride() {
|
|
19
|
-
if (override)
|
|
12
|
+
if (override)
|
|
13
|
+
return override;
|
|
20
14
|
override = Object.assign({}, defaultOverride);
|
|
21
15
|
if (fs.existsSync(paths.override)) {
|
|
22
16
|
const userOverride = require(paths.override);
|
|
23
|
-
if (typeof userOverride !==
|
|
17
|
+
if (typeof userOverride !== "object")
|
|
18
|
+
throw new Error("格式错误,请使用 npx edu g override 生成文件");
|
|
24
19
|
Object.assign(override, userOverride);
|
|
25
20
|
}
|
|
26
|
-
if (override.minify === true)
|
|
21
|
+
if (override.minify === true)
|
|
22
|
+
override.minify = defaultOverride.minify;
|
|
27
23
|
return override;
|
|
28
|
-
};
|
|
24
|
+
};
|