@qse/edu-scripts 1.14.17 → 2.0.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.
Files changed (92) hide show
  1. package/CHANGELOG.md +2 -483
  2. package/asset/rspack-dev-server-client.js +534 -0
  3. package/{src/asset → asset}/template/edu-scripts.override.js.tpl +2 -2
  4. package/{lib/asset → asset}/template/tailwind.config.js.tpl +1 -1
  5. package/babel.config.json +6 -0
  6. package/dist/cli.d.mts +1 -0
  7. package/dist/cli.mjs +1426 -0
  8. package/dist/index.d.mts +83 -0
  9. package/dist/index.mjs +13 -0
  10. package/eslint.config.mjs +3 -0
  11. package/{jest.config.js → jest.config.mjs} +8 -4
  12. package/package.json +52 -57
  13. package/src/{auto-refactor.js → auto-refactor.ts} +51 -59
  14. package/src/{build.js → build.ts} +22 -16
  15. package/src/{cli.js → cli.ts} +25 -21
  16. package/src/{commit-dist.js → commit-dist.ts} +28 -21
  17. package/src/config/paths.ts +52 -0
  18. package/src/config/plugins/mock-server/{index.js → index.ts} +30 -41
  19. package/src/config/plugins/{postcss-safe-area.js → postcss-safe-area.ts} +4 -2
  20. package/src/config/{webpackConfig.js → webpackConfig.ts} +152 -126
  21. package/src/config/{webpackDevServerConfig.js → webpackDevServerConfig.ts} +18 -18
  22. package/src/{deploy.js → deploy.ts} +36 -25
  23. package/src/{generator.js → generator.ts} +5 -14
  24. package/src/start.ts +52 -0
  25. package/src/utils/FileSizeReporter.ts +166 -0
  26. package/src/utils/{appConfig.js → appConfig.ts} +5 -4
  27. package/src/utils/{beforeStart.js → beforeStart.ts} +18 -29
  28. package/src/utils/{changeDeployVersion.js → changeDeployVersion.ts} +43 -48
  29. package/src/utils/defineConfig.ts +19 -36
  30. package/src/utils/{exec.js → exec.ts} +3 -3
  31. package/src/utils/{getConfig.js → getConfig.ts} +7 -5
  32. package/src/utils/getOverride.ts +32 -0
  33. package/src/utils/resolveModule.ts +3 -0
  34. package/tsconfig.json +3 -15
  35. package/tsdown.config.ts +5 -0
  36. package/docs/changelog.md +0 -5
  37. package/docs/debug.md +0 -17
  38. package/docs/deploy.md +0 -54
  39. package/docs/faq.md +0 -144
  40. package/docs/feat.md +0 -167
  41. package/docs/grayscale.md +0 -31
  42. package/docs/index.md +0 -5
  43. package/docs/mode.md +0 -42
  44. package/docs/override.md +0 -193
  45. package/docs/refactor-react-16.md +0 -37
  46. package/docs/refactor.md +0 -67
  47. package/docs/static.md +0 -24
  48. package/lib/asset/template/edu-scripts.override.js.tpl +0 -7
  49. package/lib/auto-refactor.js +0 -151
  50. package/lib/build.js +0 -59
  51. package/lib/cli.js +0 -66
  52. package/lib/commit-dist.js +0 -79
  53. package/lib/config/babel.dependencies.js +0 -79
  54. package/lib/config/babel.js +0 -107
  55. package/lib/config/paths.js +0 -36
  56. package/lib/config/plugins/babel-plugin-add-webpack-chunk-name.js +0 -31
  57. package/lib/config/plugins/mock-server/defineMock.d.ts +0 -6
  58. package/lib/config/plugins/mock-server/defineMock.js +0 -31
  59. package/lib/config/plugins/mock-server/index.js +0 -122
  60. package/lib/config/plugins/postcss-safe-area.js +0 -19
  61. package/lib/config/plugins/ws-utils-createSocketURL.js +0 -118
  62. package/lib/config/webpackConfig.js +0 -462
  63. package/lib/config/webpackDevServerConfig.js +0 -72
  64. package/lib/deploy.js +0 -143
  65. package/lib/generator.js +0 -50
  66. package/lib/index.d.ts +0 -2
  67. package/lib/index.js +0 -32
  68. package/lib/start.js +0 -36
  69. package/lib/utils/FileSizeReporter.js +0 -107
  70. package/lib/utils/appConfig.js +0 -32
  71. package/lib/utils/beforeStart.js +0 -62
  72. package/lib/utils/changeDeployVersion.js +0 -89
  73. package/lib/utils/defineConfig.d.ts +0 -93
  74. package/lib/utils/defineConfig.js +0 -31
  75. package/lib/utils/exec.js +0 -7
  76. package/lib/utils/getConfig.js +0 -20
  77. package/lib/utils/getOverride.js +0 -61
  78. package/src/asset/dll/libcommon3-manifest.json +0 -181
  79. package/src/asset/template/edu-app-env.d.ts.tpl +0 -20
  80. package/src/asset/template/tailwind.config.js.tpl +0 -11
  81. package/src/asset/template/tsconfig.json.tpl +0 -24
  82. package/src/config/babel.dependencies.js +0 -66
  83. package/src/config/babel.js +0 -94
  84. package/src/config/paths.js +0 -38
  85. package/src/config/plugins/babel-plugin-add-webpack-chunk-name.js +0 -55
  86. package/src/config/plugins/ws-utils-createSocketURL.js +0 -140
  87. package/src/start.js +0 -44
  88. package/src/utils/FileSizeReporter.js +0 -151
  89. package/src/utils/getOverride.js +0 -48
  90. /package/{lib/asset → asset}/dll/libcommon3-manifest.json +0 -0
  91. /package/{lib/asset → asset}/template/edu-app-env.d.ts.tpl +0 -0
  92. /package/{lib/asset → asset}/template/tsconfig.json.tpl +0 -0
package/docs/refactor.md DELETED
@@ -1,67 +0,0 @@
1
- # 老项目接入流程
2
-
3
- ## 事前约定
4
-
5
- `package.json` 中约定了 `name` 和 `version` 的含义
6
-
7
- ```json
8
- {
9
- "name": "项目名称,打包部署后都是这个名字",
10
- "version": "版本号"
11
- }
12
- ```
13
-
14
- ## 重构
15
-
16
- 运行 `npx @qse/edu-scripts auto-refactor` 自动重构项目,按终端提示进行操作
17
-
18
- 运行完毕后接着按下面的步骤修改代码
19
-
20
- 1. `index1.html` 增加 CDN
21
-
22
- ```html
23
- <% if(process.env.NODE_ENV === 'development') { %>
24
- <script src="https://www.zhidianbao.cn:8443/qsxxwapdev/edu-scripts/react-dev-preset.js"></script>
25
- <script src="https://www.zhidianbao.cn:8443/qsxxwapdev/edu-scripts/moment2.29.1.js"></script>
26
- <script src="https://www.zhidianbao.cn:8443/qsxxwapdev/edu-scripts/antd3.26.20.js"></script>
27
- <script src="https://registry.npmmirror.com/@qse/antd/latest/files/dist/qsb-antd.min.js"></script>
28
- <script src="https://registry.npmmirror.com/@qse/scheme-render/latest/files/dist/qsb-scheme-render.min.js"></script>
29
- <% } else { %>
30
- <script src="//static.qsepay.net/lib/react16.14_fastclick1.0.6_natty-storage2.0.2-fetch2.4.2_axios0.21.1_common31.js"></script>
31
- <script src="//static.qsepay.net/lib/moment2.29.1.js"></script>
32
- <script src="//static.qsepay.net/lib/antd3.26.20.js"></script>
33
-
34
- <!-- 如果你是主工程,需要下面这两个文件 -->
35
- <script src="static/lib/qsb-antd.min.js"></script>
36
- <script src="static/lib/qsb-scheme-render.min.js"></script>
37
- <% } %>
38
- ```
39
-
40
- 如果你的钉钉容器打不开应用,可以添加动态的 `polyfill` 解决问题
41
-
42
- ```html
43
- <!-- polyfill 官网 -->
44
- <script src="https://polyfill.io/v3/polyfill.min.js?features=default,es2015,es2016,es2017" crossorigin="anonymous"></script>
45
-
46
- <!-- 阿里云镜像 -->
47
- <script src="https://polyfill.alicdn.com/v3/polyfill.min.js?features=default,es2015,es2016,es2017" crossorigin="anonymous"></script>
48
- ```
49
-
50
- 2. `index1.html` 修改主文件
51
-
52
- ```html
53
- <!-- 可选,动态主文件 -->
54
- <script src="<%= htmlWebpackPlugin.files.js %>"></script>
55
-
56
- <!-- 示例 -->
57
- <script src="js/utils_2.0.0.js"></script>
58
- <script src="<%= htmlWebpackPlugin.files.js %>"></script>
59
- <script src="js/frame/frame_2.10.0.js"></script>
60
- ```
61
-
62
- 3. 运行 `npm i` 安装依赖
63
- 4. 运行项目 `npm run start` 参照下方排除错误
64
-
65
- ## 报错处理
66
-
67
- 请看[错误处理](faq.md)
package/docs/static.md DELETED
@@ -1,24 +0,0 @@
1
- # 静态资源
2
-
3
- ## 开发环境使用的静态资源
4
-
5
- ```html
6
- <script src="https://www.zhidianbao.cn:8443/qsxxwapdev/edu-scripts/react-dev-preset.js"></script>
7
- <script src="https://www.zhidianbao.cn:8443/qsxxwapdev/edu-scripts/moment2.29.1.js"></script>
8
- <script src="https://www.zhidianbao.cn:8443/qsxxwapdev/edu-scripts/antd3.26.20.js"></script>
9
- <script src="https://registry.npmmirror.com/@qse/antd/latest/files/dist/qsb-antd.min.js"></script>
10
- <script src="https://registry.npmmirror.com/@qse/scheme-render/latest/files/dist/qsb-scheme-render.min.js"></script>
11
- ```
12
-
13
- ## 生产环境使用的静态资源
14
-
15
- ```html
16
- <!-- 包含 react react-dom natty-fetch common-utils dll(refast react-keeper) -->
17
- <script src="//static.qsepay.net/lib/react16.14_fastclick1.0.6_natty-storage2.0.2-fetch2.4.2_common31.js"></script>
18
- <!-- 额外包含 axios @0.21.1 -->
19
- <script src="//static.qsepay.net/lib/react16.14_fastclick1.0.6_natty-storage2.0.2-fetch2.4.2_axios0.21.1_common31.js"></script>
20
-
21
- <!-- 包含 moment 与 moment-locale-zh-cn -->
22
- <script src="//static.qsepay.net/lib/moment2.29.1.js"></script>
23
- <script src="//static.qsepay.net/lib/antd3.26.20.js"></script>
24
- ```
@@ -1,7 +0,0 @@
1
- const { defineConfig } = require('@qse/edu-scripts')
2
-
3
- module.exports = defineConfig({
4
- startup: ({ logger, chalk }) => {
5
- logger.info('本地免登录开发地址:', chalk.cyan(`http://127.0.0.1:${process.env.PORT}/index.html`))
6
- },
7
- })
@@ -1,151 +0,0 @@
1
- // src/auto-refactor.js
2
- var fs = require("fs-extra");
3
- var paths = require("./config/paths");
4
- var path = require("path");
5
- var chalk = require("chalk");
6
- var pkg = require("../package.json");
7
- var glob = require("globby");
8
- var ora = require("ora");
9
- var { prompt } = require("inquirer");
10
- var open = require("open");
11
- async function step(msg, callback) {
12
- const spinner = ora(msg).start();
13
- try {
14
- await callback(spinner);
15
- spinner.succeed();
16
- } catch (error) {
17
- spinner.fail();
18
- throw error;
19
- }
20
- }
21
- module.exports = async function autoRefactor() {
22
- if (await fs.pathExists(paths.public)) {
23
- console.log(chalk.green("已完成改造,不需要重复执行,如果运行报错请查看文档"));
24
- console.log(`文档: ${chalk.underline(pkg.homepage)}`);
25
- process.exit(0);
26
- }
27
- const appPkg = require(paths.package);
28
- const answers = await prompt([
29
- {
30
- type: "input",
31
- name: "name",
32
- message: "请输入模块名称,要求唯一,不能与其他工程相同",
33
- default: appPkg.name,
34
- validate: (v) => /^[a-z][a-z0-9_-]+$/.test(v) || "请按格式输入 /^[a-z][a-z0-9_-]+$/ 只能使用小写字母、连字符、下划线"
35
- },
36
- {
37
- type: "input",
38
- name: "version",
39
- message: "版本号",
40
- default: "1.0.0",
41
- validate: (v) => /^\d+\.\d+\.\d+$/.test(v) || "请按格式输入 /^\\d+\\.\\d+\\.\\d+$/ 例如: 1.0.0"
42
- },
43
- {
44
- type: "list",
45
- name: "mode",
46
- message: "项目使用的哪种模式",
47
- choices: [
48
- { name: "教育子工程模式", value: "" },
49
- { name: "教育主工程模式", value: "main" },
50
- { name: "独立模式", value: "single" }
51
- ]
52
- },
53
- {
54
- type: "checkbox",
55
- name: "deploy",
56
- message: "项目需要部署到哪里",
57
- when: (ans) => ans.mode !== "single",
58
- choices: [
59
- { name: "校端", value: "-s" },
60
- { name: "局端", value: "-b" },
61
- { name: "公文端", value: "-d" }
62
- ],
63
- validate: (v) => !!v && v.length > 0 || "必须选一个"
64
- }
65
- ]);
66
- appPkg.name = answers.name;
67
- appPkg.version = answers.version;
68
- await step("创建 public 文件夹", async () => {
69
- await fs.mkdir(paths.public);
70
- });
71
- await step("移动 js 文件夹", async () => {
72
- if (await fs.pathExists(path.resolve(paths.src, "js"))) {
73
- await fs.move(path.resolve(paths.src, "js"), path.resolve(paths.public, "js"));
74
- }
75
- });
76
- await step("移动 html 文件", async () => {
77
- const HTMLFiles = await glob("*.html", { cwd: paths.src });
78
- for (const file of HTMLFiles) {
79
- await fs.move(path.resolve(paths.src, file), path.resolve(paths.public, file));
80
- }
81
- });
82
- await step("删除 dll 文件夹", async () => {
83
- if (await fs.pathExists(path.resolve(paths.src, "dll"))) {
84
- await fs.remove(path.resolve(paths.src, "dll"));
85
- }
86
- });
87
- await step("删除没用的 babel 和 webpack 配置", async () => {
88
- const deleteFiles = [
89
- ...await glob("{.,*}babel*"),
90
- ...await glob("*webpack*"),
91
- ...await glob("package-lock.json"),
92
- paths.nodeModules,
93
- paths.sshSftp
94
- ];
95
- for (const filePath of deleteFiles) {
96
- await fs.remove(filePath);
97
- }
98
- });
99
- await step("设置项目模式", () => {
100
- if (answers.mode) {
101
- appPkg.edu = { mode: answers.mode };
102
- }
103
- });
104
- await step("修改 package.json 的 scripts", () => {
105
- const scripts = appPkg.scripts;
106
- scripts.start = "edu-scripts start";
107
- scripts.build = "edu-scripts build";
108
- scripts.analyze = "edu-scripts build --analyze";
109
- if (answers.mode !== "single") {
110
- scripts.deploy = `edu-scripts deploy ${answers.deploy.join(" ")}`;
111
- } else {
112
- scripts.deploy = `edu-scripts deploy`;
113
- scripts["commit-dist"] = "edu-scripts commit-dist --rm-local";
114
- }
115
- scripts["one-key-deploy"] = "npm version patch";
116
- scripts.postversion = "npm run build && npm run deploy";
117
- });
118
- await step("删除 babel/webpack 相关依赖", (spinner) => {
119
- const deleteRe = /(babel|autoprefixer|webpack|loader|less|css|sass|hmr|ssh-sftp|regenerator-runtime|nowa|prettier)/i;
120
- const deletePkgs = {
121
- dependencies: [],
122
- devDependencies: []
123
- };
124
- Object.entries(deletePkgs).forEach(([scope, pkgs]) => {
125
- for (const key in appPkg[scope]) {
126
- if (Object.hasOwnProperty.call(appPkg[scope], key)) {
127
- if (deleteRe.test(key)) {
128
- pkgs.push(key);
129
- delete appPkg[scope][key];
130
- }
131
- }
132
- }
133
- });
134
- spinner.clear();
135
- console.log(`删除的pkgs
136
- ${chalk.green(JSON.stringify(deletePkgs, null, 2))}
137
- `);
138
- appPkg.devDependencies["@qse/edu-scripts"] = "^" + pkg.version;
139
- });
140
- await fs.writeFile(paths.package, JSON.stringify(appPkg, null, 2), "utf-8");
141
- open(`${pkg.homepage}#/refactor`);
142
- console.log(
143
- chalk.green(`
144
- 改造还未完成,剩余步骤请查看文档
145
- ${pkg.homepage}#/refactor
146
-
147
- 运行 npm i 安装依赖
148
- 运行 edu-scripts start 启动服务
149
- `)
150
- );
151
- };
package/lib/build.js DELETED
@@ -1,59 +0,0 @@
1
- // src/build.js
2
- process.env.NODE_ENV = "production";
3
- process.env.BABEL_ENV = "production";
4
- process.env.BROWSERSLIST = ">0.2%, iOS>=9, ie 11, chrome>=49, not op_mini all";
5
- var webpack = require("webpack");
6
- var chalk = require("chalk");
7
- var getConfig = require("./utils/getConfig");
8
- var {
9
- measureFileSizesBeforeBuild,
10
- printFileSizesAfterBuild
11
- } = require("./utils/FileSizeReporter");
12
- var paths = require("./config/paths");
13
- var fs = require("fs-extra");
14
- var appConfig = require("./utils/appConfig");
15
- var WARN_AFTER_BUNDLE_GZIP_SIZE = appConfig.single ? 1024 * 1024 : 30 * 1024;
16
- var WARN_AFTER_CHUNK_GZIP_SIZE = 1024 * 1024;
17
- module.exports = async function build(args) {
18
- if (args.analyze) {
19
- process.env.ANALYZE = "1";
20
- }
21
- if (args.outputHtml) {
22
- process.env.OUTPUT_HTML = "1";
23
- }
24
- const previousSizeMap = await measureFileSizesBeforeBuild(paths.dist);
25
- fs.emptyDirSync(paths.dist);
26
- if (appConfig.single) {
27
- fs.copySync(paths.public, paths.resolveApp("dist"));
28
- }
29
- if (appConfig.mainProject && fs.existsSync(paths.static)) {
30
- fs.copySync(paths.static, paths.resolveApp("dist", "static"));
31
- }
32
- webpack(getConfig(args), (error, stats) => {
33
- if (error) {
34
- console.log(chalk.red("编译失败"));
35
- console.log(chalk.red(error.message || error));
36
- console.log();
37
- process.exit(1);
38
- }
39
- if (stats.compilation.errors.length) {
40
- console.log(chalk.red("编译失败"));
41
- console.log(stats.toString({ all: false, errors: true, colors: true }));
42
- process.exit(1);
43
- }
44
- console.log(stats.toString({ colors: true, preset: "errors-warnings", timings: true }));
45
- printFileSizesAfterBuild(
46
- stats,
47
- previousSizeMap,
48
- paths.dist,
49
- WARN_AFTER_BUNDLE_GZIP_SIZE,
50
- WARN_AFTER_CHUNK_GZIP_SIZE
51
- );
52
- if (appConfig.single) {
53
- console.log(`打包完成,可以使用 ${chalk.green("@qse/ssh-sftp")} 自动部署代码到 v1`);
54
- } else {
55
- console.log(`打包完成,可以运行 ${chalk.green("npx edu-scripts deploy")} 部署代码到 v1`);
56
- }
57
- console.log();
58
- });
59
- };
package/lib/cli.js DELETED
@@ -1,66 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- // src/cli.js
4
- var pkg = require("../package.json");
5
- require("./utils/beforeStart");
6
- require("yargs").usage(`教育工程化 webpack5 基础框架
7
- 文档: ${pkg.homepage}`).command(
8
- "start",
9
- "开发",
10
- (yargs) => yargs.option("port", { alias: "p", desc: "指定端口" }).option("open", { desc: "启动后打开页面" }),
11
- (args) => require("./start")(args)
12
- ).command(
13
- "build",
14
- "打包",
15
- (yargs) => yargs.option("analyze", {
16
- alias: "a",
17
- desc: "分析代码",
18
- default: false,
19
- boolean: true
20
- }).option("output-html", {
21
- alias: "o",
22
- desc: "输出 html 文件",
23
- default: false,
24
- boolean: true
25
- }),
26
- (args) => require("./build")(args)
27
- ).command(
28
- "deploy",
29
- "自动部署 dist 到 v1 服务器",
30
- (yargs) => yargs.option("school", { alias: "s", desc: "上传到校端", default: false, boolean: true }).option("bureau", { alias: "b", desc: "上传到局端", default: false, boolean: true }).option("documentshelves", {
31
- alias: "d",
32
- desc: "上传到公文",
33
- default: false,
34
- boolean: true
35
- }).option("compositionshelves", {
36
- alias: "c",
37
- desc: "上传到文曲智阅",
38
- default: false,
39
- boolean: true
40
- }).option("compositionshelves-dingtalk", {
41
- alias: "cd",
42
- desc: "上传到文曲智阅(钉钉一方化)",
43
- default: false,
44
- boolean: true
45
- }),
46
- (args) => require("./deploy")(args)
47
- ).command(
48
- ["generator", "g"],
49
- "自动生成代码",
50
- (yargs) => yargs.command(
51
- "override",
52
- "创建 override 文件",
53
- {},
54
- (args) => require("./generator").override(args)
55
- ).command(
56
- "tailwind",
57
- "创建 tailwind 文件",
58
- {},
59
- (args) => require("./generator").tailwind(args)
60
- ).command("ts", "创建 tsconfig 文件", {}, (args) => require("./generator").ts(args)).showHelpOnFail(true).demandCommand(1, "")
61
- ).command("auto-refactor", "自动改造项目", {}, () => require("./auto-refactor")()).command(
62
- "commit-dist",
63
- "提交 dist 目录到 dist 分支",
64
- (yargs) => yargs.option("rm-local", { desc: "提交完后删除本地 dist", type: "boolean" }),
65
- (args) => require("./commit-dist")(args)
66
- ).showHelpOnFail(true).demandCommand(1, "").alias({ v: "version", h: "help" }).argv;
@@ -1,79 +0,0 @@
1
- // src/commit-dist.js
2
- var chalk = require("chalk");
3
- var paths = require("./config/paths");
4
- var fs = require("fs-extra");
5
- var exec = (cmd, opts) => require("child_process").execSync(cmd, { encoding: "utf-8", stdio: "pipe", ...opts });
6
- var tmp = require("tmp");
7
- function validateSVNRoot(root) {
8
- const ls = exec(`svn ls ${root}`);
9
- return ["trunk", "branches"].every((s) => ls.includes(s));
10
- }
11
- function getWorkingCopyInfo() {
12
- exec(`svn up`);
13
- const url = exec(`svn info --show-item url`).trim();
14
- const revision = exec(`svn info --show-item last-changed-revision`).trim();
15
- const author = exec(`svn info --show-item last-changed-author`).trim();
16
- let branch = "trunk";
17
- let root = url.replace(/\/trunk$/, "");
18
- if (url.includes("/branches/")) {
19
- branch = url.split("/").pop();
20
- root = url.replace(/\/branches\/[^/]+$/, "");
21
- }
22
- let distBranchURL = root + "/branches/dist";
23
- let distBranchDirURL = distBranchURL + "/" + branch;
24
- if (!validateSVNRoot(root)) {
25
- console.log(chalk.red("SVN目录不符合规则,必须包含 trunk branches"));
26
- process.exit(1);
27
- }
28
- return { url, branch, revision, author, distBranchURL, distBranchDirURL, root };
29
- }
30
- function copyDistToRepo(info) {
31
- const tmpdir = tmp.dirSync().name;
32
- try {
33
- exec(`svn ls ${info.distBranchDirURL} --depth empty`);
34
- } catch (error) {
35
- if (error.message.includes("non-existent")) {
36
- exec(
37
- `svn mkdir ${info.distBranchDirURL} --parents -m "[edu-scripts] create ${info.branch} dist"`
38
- );
39
- } else {
40
- throw error;
41
- }
42
- }
43
- exec(`svn co ${info.distBranchDirURL} ${tmpdir}`);
44
- try {
45
- exec(`svn rm * --force -q`, { cwd: tmpdir });
46
- } catch (error) {
47
- }
48
- fs.copySync(paths.dist, tmpdir);
49
- exec(`svn add * --force --auto-props --parents --depth infinity -q`, { cwd: tmpdir });
50
- const msg = `[edu-scripts] commit ${info.branch} dist #${info.revision} @${info.author}`;
51
- exec(`svn ci -m "${msg}"`, { cwd: tmpdir });
52
- fs.removeSync(tmpdir);
53
- }
54
- module.exports = async function commitDist(args) {
55
- if (!fs.existsSync(paths.dist)) {
56
- console.log(chalk.red("未找到 dist 文件夹,请先 edu-scpirts build"));
57
- process.exit(1);
58
- }
59
- if (exec("svn st").trim().length) {
60
- console.log(chalk.red("似乎存在未提交的代码,请提交后重试。运行 svn st 查看具体信息"));
61
- process.exit(1);
62
- }
63
- const info = getWorkingCopyInfo();
64
- console.log(
65
- chalk.green(
66
- [
67
- `分支: ${info.branch}`,
68
- `版本: ${info.revision}`,
69
- `作者: ${info.author}`,
70
- `地址: ${info.distBranchDirURL}`
71
- ].join("\n")
72
- )
73
- );
74
- copyDistToRepo(info);
75
- if (args.rmLocal) {
76
- fs.removeSync(paths.dist);
77
- }
78
- console.log(chalk.green("提交完成"));
79
- };
@@ -1,79 +0,0 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __copyProps = (to, from, except, desc) => {
8
- if (from && typeof from === "object" || typeof from === "function") {
9
- for (let key of __getOwnPropNames(from))
10
- if (!__hasOwnProp.call(to, key) && key !== except)
11
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
12
- }
13
- return to;
14
- };
15
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
16
- // If the importer is in node compatibility mode or this is not an ESM
17
- // file that has been converted to a CommonJS file using a Babel-
18
- // compatible transform (i.e. "__esModule" has not been set), then set
19
- // "default" to the CommonJS "module.exports" for node compatibility.
20
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
21
- mod
22
- ));
23
-
24
- // src/config/babel.dependencies.js
25
- var getOverride = require("../utils/getOverride");
26
- module.exports = function getBabelConfig(opts = {}) {
27
- const isDev = process.env.NODE_ENV === "development";
28
- let config = {
29
- cacheDirectory: true,
30
- cacheCompression: false,
31
- babelrc: false,
32
- configFile: false,
33
- sourceType: "unambiguous",
34
- compact: false,
35
- sourceMaps: isDev,
36
- inputSourceMap: isDev,
37
- presets: [
38
- [
39
- require.resolve("@babel/preset-env"),
40
- {
41
- modules: opts.modules,
42
- useBuiltIns: "entry",
43
- corejs: 3,
44
- // Exclude transforms that make all code slower
45
- exclude: ["transform-typeof-symbol"]
46
- }
47
- ]
48
- ].filter(Boolean),
49
- plugins: [
50
- [
51
- require.resolve("@babel/plugin-transform-runtime"),
52
- {
53
- absoluteRuntime: true,
54
- corejs: false,
55
- helpers: true,
56
- // By default, babel assumes babel/runtime version 7.0.0-beta.0,
57
- // explicitly resolving to match the provided helper functions.
58
- // https://github.com/babel/babel/issues/10261
59
- version: require("@babel/runtime/package.json").version,
60
- regenerator: true
61
- // // https://babeljs.io/docs/en/babel-plugin-transform-runtime#useesmodules
62
- // // We should turn this on once the lowest version of Node LTS
63
- // // supports ES Modules.
64
- // useESModules: true,
65
- }
66
- ],
67
- [
68
- require.resolve("babel-plugin-import"),
69
- { libraryName: "lodash", libraryDirectory: "", camel2DashComponentName: false },
70
- "lodash"
71
- ]
72
- ].filter(Boolean)
73
- };
74
- const override = getOverride();
75
- if (override.babel) {
76
- config = override.babel(config, "node_modules") || config;
77
- }
78
- return config;
79
- };
@@ -1,107 +0,0 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __copyProps = (to, from, except, desc) => {
8
- if (from && typeof from === "object" || typeof from === "function") {
9
- for (let key of __getOwnPropNames(from))
10
- if (!__hasOwnProp.call(to, key) && key !== except)
11
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
12
- }
13
- return to;
14
- };
15
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
16
- // If the importer is in node compatibility mode or this is not an ESM
17
- // file that has been converted to a CommonJS file using a Babel-
18
- // compatible transform (i.e. "__esModule" has not been set), then set
19
- // "default" to the CommonJS "module.exports" for node compatibility.
20
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
21
- mod
22
- ));
23
-
24
- // src/config/babel.js
25
- var fs = require("fs");
26
- var paths = require("./paths");
27
- var appConfig = require("../utils/appConfig");
28
- var getOverride = require("../utils/getOverride");
29
- var addWebpackChunkName = require("./plugins/babel-plugin-add-webpack-chunk-name");
30
- var hasJsxRuntime = (() => {
31
- try {
32
- require.resolve("react/jsx-runtime");
33
- return appConfig.single;
34
- } catch (error) {
35
- return false;
36
- }
37
- })();
38
- module.exports = function getBabelConfig(opts = {}) {
39
- const isTypeScriptEnabled = fs.existsSync(paths.tsconfig);
40
- const isDev = process.env.NODE_ENV === "development";
41
- let config = {
42
- cacheDirectory: true,
43
- cacheCompression: false,
44
- compact: !isDev,
45
- babelrc: false,
46
- configFile: false,
47
- presets: [
48
- [
49
- require.resolve("@babel/preset-env"),
50
- {
51
- modules: opts.modules,
52
- useBuiltIns: "entry",
53
- corejs: 3,
54
- // Exclude transforms that make all code slower
55
- exclude: ["transform-typeof-symbol"]
56
- }
57
- ],
58
- [
59
- require.resolve("@babel/preset-react"),
60
- {
61
- development: isDev,
62
- runtime: hasJsxRuntime ? "automatic" : "classic",
63
- useBuiltIns: !hasJsxRuntime
64
- }
65
- ],
66
- isTypeScriptEnabled && require.resolve("@babel/preset-typescript")
67
- ].filter(Boolean),
68
- plugins: [
69
- [
70
- require.resolve("@babel/plugin-transform-runtime"),
71
- {
72
- absoluteRuntime: true,
73
- corejs: false,
74
- helpers: true,
75
- // By default, babel assumes babel/runtime version 7.0.0-beta.0,
76
- // explicitly resolving to match the provided helper functions.
77
- // https://github.com/babel/babel/issues/10261
78
- version: require("@babel/runtime/package.json").version,
79
- regenerator: true
80
- // // https://babeljs.io/docs/en/babel-plugin-transform-runtime#useesmodules
81
- // // We should turn this on once the lowest version of Node LTS
82
- // // supports ES Modules.
83
- // useESModules: true,
84
- }
85
- ],
86
- [
87
- require.resolve("babel-plugin-import"),
88
- { libraryName: "lodash", libraryDirectory: "", camel2DashComponentName: false },
89
- "lodash"
90
- ],
91
- isDev && require.resolve("react-refresh/babel"),
92
- addWebpackChunkName
93
- ].filter(Boolean)
94
- };
95
- const override = getOverride();
96
- if (override.decorators) {
97
- config.presets[0][1].include = ["@babel/plugin-transform-class-properties"];
98
- config.plugins.push([
99
- require.resolve("@babel/plugin-proposal-decorators"),
100
- { version: "legacy" }
101
- ]);
102
- }
103
- if (override.babel) {
104
- config = override.babel(config, "src") || config;
105
- }
106
- return config;
107
- };
@@ -1,36 +0,0 @@
1
- // src/config/paths.js
2
- var path = require("path");
3
- var fs = require("fs");
4
- var glob = require("globby");
5
- function resolveApp(...filePath) {
6
- return path.resolve(process.cwd(), ...filePath);
7
- }
8
- function getExistPath(...paths2) {
9
- for (const path2 of paths2) {
10
- if (fs.existsSync(path2)) {
11
- return path2;
12
- }
13
- }
14
- return paths2[0];
15
- }
16
- var paths = {
17
- resolveApp,
18
- eduAppEnv: resolveApp("src", "edu-app-env.d.ts"),
19
- dist: resolveApp("dist"),
20
- sshSftp: resolveApp(".sftprc.json"),
21
- nodeModules: resolveApp("node_modules"),
22
- tsconfig: resolveApp("tsconfig.json"),
23
- jsconfig: resolveApp("jsconfig.json"),
24
- package: resolveApp("package.json"),
25
- tailwind: resolveApp("tailwind.config.js"),
26
- indexJS: resolveApp("src", "index.js"),
27
- pages: resolveApp("src", "pages"),
28
- override: resolveApp("edu-scripts.override.js"),
29
- indexHTML: glob.sync("./public/*.html", { absolute: true }),
30
- src: resolveApp("src"),
31
- public: resolveApp("public"),
32
- static: resolveApp("public", "static"),
33
- theme: getExistPath(resolveApp("theme.json"), resolveApp("theme.js")),
34
- mock: resolveApp("mock")
35
- };
36
- module.exports = paths;