@qse/edu-scripts 0.0.0-beta.1 → 0.0.0-beta.3

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.
@@ -6,8 +6,8 @@ import { BundleAnalyzerPlugin } from "webpack-bundle-analyzer";
6
6
  import ReactRefreshPlugin from "@rspack/plugin-react-refresh";
7
7
  import paths from "./paths.js";
8
8
  import appConfig from "../utils/appConfig.js";
9
- import { once } from "lodash-es";
10
9
  import { createRequire } from "node:module";
10
+ import chalk from "chalk";
11
11
  var require2 = createRequire(import.meta.url);
12
12
  var appPkg = fs.readJsonSync(paths.package);
13
13
  var jsMainPath = appConfig.grayscale ? `${appPkg.name}/beta/${appPkg.name}` : `${appPkg.name}/${appPkg.name}`;
@@ -161,7 +161,7 @@ function getWebpackConfig(args, override) {
161
161
  },
162
162
  extensions: [".web.js", ".web.mjs", ".js", ".mjs", ".jsx", ".ts", ".tsx", ".json", ".wasm"]
163
163
  },
164
- stats: isDev ? { preset: "errors-warnings", timings: true } : void 0,
164
+ stats: false,
165
165
  devtool: isDev ? "cheap-module-source-map" : false,
166
166
  module: {
167
167
  rules: [
@@ -172,11 +172,13 @@ function getWebpackConfig(args, override) {
172
172
  type: "asset/source"
173
173
  },
174
174
  {
175
- test: /\.[jt]sx?$/,
175
+ test: /\.[cm]?[jt]sx?$/,
176
+ exclude: /node_modules/,
176
177
  use: [
177
178
  {
178
179
  loader: "builtin:swc-loader",
179
180
  options: {
181
+ env: { targets: process.env.BROWSERSLIST },
180
182
  rspackExperiments: {
181
183
  import: [
182
184
  {
@@ -186,14 +188,16 @@ function getWebpackConfig(args, override) {
186
188
  ...override.import
187
189
  ]
188
190
  },
191
+ isModule: "unknown",
189
192
  jsc: {
190
193
  parser: {
191
194
  syntax: "typescript",
192
195
  tsx: true,
193
196
  decorators: override.decorators
194
197
  },
195
- // externalHelpers: true,
198
+ externalHelpers: true,
196
199
  transform: {
200
+ legacyDecorator: override.decorators,
197
201
  react: {
198
202
  runtime: "automatic",
199
203
  development: isDev,
@@ -205,6 +209,25 @@ function getWebpackConfig(args, override) {
205
209
  }
206
210
  ]
207
211
  },
212
+ {
213
+ test: /\.[cm]?jsx?$/,
214
+ exclude: /node_modules[\\/](core-js|@swc[\\/]helpers)([\\/]|$)/,
215
+ use: [
216
+ {
217
+ loader: "builtin:swc-loader",
218
+ options: {
219
+ env: { targets: process.env.BROWSERSLIST },
220
+ isModule: "unknown",
221
+ jsc: {
222
+ parser: {
223
+ syntax: "ecmascript"
224
+ },
225
+ externalHelpers: true
226
+ }
227
+ }
228
+ }
229
+ ]
230
+ },
208
231
  {
209
232
  test: cssRegex,
210
233
  exclude: cssModuleRegex,
@@ -367,14 +390,18 @@ function getWebpackConfig(args, override) {
367
390
  })
368
391
  ) : [],
369
392
  process.env.ANALYZE && isProd && new BundleAnalyzerPlugin(),
370
- isDev && !!override.startup && ((compiler) => {
371
- compiler.hooks.afterDone.tap(
372
- "edu-scripts-startup",
373
- once(() => {
393
+ isDev && ((compiler) => {
394
+ let isFirst = true;
395
+ compiler.hooks.afterDone.tap("edu-scripts-startup", (stats) => {
396
+ if (!isFirst)
397
+ console.clear();
398
+ isFirst = false;
399
+ if (override.startup) {
374
400
  const logger = compiler.getInfrastructureLogger("edu-scripts");
375
- override.startup({ logger, chalk: require2("chalk"), compiler });
376
- })
377
- );
401
+ override.startup({ logger, chalk, compiler });
402
+ }
403
+ console.log(stats.toString({ preset: "errors-warnings", timings: true, colors: true }));
404
+ });
378
405
  })
379
406
  ].filter(Boolean),
380
407
  optimization: {
package/es/start.js CHANGED
@@ -16,6 +16,15 @@ async function start(args) {
16
16
  args.port = port;
17
17
  process.env.PORT = port;
18
18
  const compiler = rspack(getConfig(args));
19
+ const middleware = rspack.lazyCompilationMiddleware(compiler);
20
+ const oldSetupMiddlewares = compiler.options.devServer.setupMiddlewares;
21
+ compiler.options.devServer.setupMiddlewares = (middlewares, devServer2) => {
22
+ if (oldSetupMiddlewares) {
23
+ middlewares = oldSetupMiddlewares(middlewares, devServer2);
24
+ }
25
+ middlewares.unshift(middleware);
26
+ return middlewares;
27
+ };
19
28
  const devServer = new RspackDevServer(compiler.options.devServer, compiler);
20
29
  devServer.start();
21
30
  [("SIGINT", "SIGTERM")].forEach(function(sig) {
@@ -53,7 +53,7 @@ export type Config = {
53
53
  */
54
54
  mock?: boolean;
55
55
  /**
56
- * 开发模式启动后只执行一次的函数,用来展示启动后的提示信息,或者自定义的逻辑
56
+ * 开发模式启动后用来展示启动后的提示信息,或者自定义的逻辑
57
57
  */
58
58
  startup?: (params: {
59
59
  /** 控制台输出内容 */
package/eslint.config.mjs CHANGED
@@ -1,3 +1,3 @@
1
- import config from 'eslint-config-qsb-react'
1
+ import config from '@qse/eslint-config'
2
2
 
3
3
  export default config
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qse/edu-scripts",
3
- "version": "0.0.0-beta.1",
3
+ "version": "0.0.0-beta.3",
4
4
  "author": "Kinoko",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -40,6 +40,7 @@
40
40
  "@rspack/plugin-react-refresh": "^1.6.1",
41
41
  "@svgr/webpack": "^8.1.0",
42
42
  "@swc-node/register": "^1.11.1",
43
+ "@swc/helpers": "^0.5.19",
43
44
  "@types/express": "^4.17.25",
44
45
  "chalk": "^4.1.2",
45
46
  "chokidar": "^3.6.0",
@@ -83,10 +84,11 @@
83
84
  "devDependencies": {
84
85
  "@babel/preset-env": "~7.29.0",
85
86
  "@babel/preset-typescript": "^7.28.5",
87
+ "@qse/eslint-config": "^1.0.0",
86
88
  "@types/fs-extra": "^11.0.4",
87
89
  "@types/jest": "^30.0.0",
88
90
  "@types/yargs": "^17.0.35",
89
- "eslint-config-qsb-react": "^2.0.4",
91
+ "eslint": "^9.39.3",
90
92
  "father": "^4.5.2",
91
93
  "jest": "^30.2.0",
92
94
  "rimraf": "^6.1.3",
@@ -125,8 +125,8 @@ function mockMiddlewave(req, res, next) {
125
125
  }
126
126
 
127
127
  /**
128
- * @param {import('webpack-dev-server').Middleware[]} middelwaves
129
- * @param {import('webpack-dev-server')} devServer
128
+ * @param {Parameters<import('@rspack/dev-server').Configuration['setupMiddlewares']>[0]} middelwaves
129
+ * @param {Parameters<import('@rspack/dev-server').Configuration['setupMiddlewares']>[1]} devServer
130
130
  */
131
131
  function setupMockServer(middelwaves, devServer) {
132
132
  if (!fs.existsSync(paths.mock)) return
@@ -5,8 +5,8 @@ import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'
5
5
  import ReactRefreshPlugin from '@rspack/plugin-react-refresh'
6
6
  import paths from './paths.js'
7
7
  import appConfig from '../utils/appConfig.js'
8
- import { once } from 'lodash-es'
9
8
  import { createRequire } from 'node:module'
9
+ import chalk from 'chalk'
10
10
 
11
11
  const require = createRequire(import.meta.url)
12
12
  const appPkg = fs.readJsonSync(paths.package)
@@ -185,7 +185,7 @@ export default function getWebpackConfig(args, override) {
185
185
  },
186
186
  extensions: ['.web.js', '.web.mjs', '.js', '.mjs', '.jsx', '.ts', '.tsx', '.json', '.wasm'],
187
187
  },
188
- stats: isDev ? { preset: 'errors-warnings', timings: true } : undefined,
188
+ stats: false,
189
189
  devtool: isDev ? 'cheap-module-source-map' : false,
190
190
  module: {
191
191
  rules: [
@@ -196,11 +196,13 @@ export default function getWebpackConfig(args, override) {
196
196
  type: 'asset/source',
197
197
  },
198
198
  {
199
- test: /\.[jt]sx?$/,
199
+ test: /\.[cm]?[jt]sx?$/,
200
+ exclude: /node_modules/,
200
201
  use: [
201
202
  {
202
203
  loader: 'builtin:swc-loader',
203
204
  options: {
205
+ env: { targets: process.env.BROWSERSLIST },
204
206
  rspackExperiments: {
205
207
  import: [
206
208
  {
@@ -210,14 +212,16 @@ export default function getWebpackConfig(args, override) {
210
212
  ...override.import,
211
213
  ],
212
214
  },
215
+ isModule: 'unknown',
213
216
  jsc: {
214
217
  parser: {
215
218
  syntax: 'typescript',
216
219
  tsx: true,
217
220
  decorators: override.decorators,
218
221
  },
219
- // externalHelpers: true,
222
+ externalHelpers: true,
220
223
  transform: {
224
+ legacyDecorator: override.decorators,
221
225
  react: {
222
226
  runtime: 'automatic',
223
227
  development: isDev,
@@ -229,6 +233,25 @@ export default function getWebpackConfig(args, override) {
229
233
  },
230
234
  ],
231
235
  },
236
+ {
237
+ test: /\.[cm]?jsx?$/,
238
+ exclude: /node_modules[\\/](core-js|@swc[\\/]helpers)([\\/]|$)/,
239
+ use: [
240
+ {
241
+ loader: 'builtin:swc-loader',
242
+ options: {
243
+ env: { targets: process.env.BROWSERSLIST },
244
+ isModule: 'unknown',
245
+ jsc: {
246
+ parser: {
247
+ syntax: 'ecmascript',
248
+ },
249
+ externalHelpers: true,
250
+ },
251
+ },
252
+ },
253
+ ],
254
+ },
232
255
  {
233
256
  test: cssRegex,
234
257
  exclude: cssModuleRegex,
@@ -394,15 +417,18 @@ export default function getWebpackConfig(args, override) {
394
417
  : []),
395
418
  process.env.ANALYZE && isProd && new BundleAnalyzerPlugin(),
396
419
  isDev &&
397
- !!override.startup &&
398
420
  ((compiler) => {
399
- compiler.hooks.afterDone.tap(
400
- 'edu-scripts-startup',
401
- once(() => {
421
+ let isFirst = true
422
+ compiler.hooks.afterDone.tap('edu-scripts-startup', (stats) => {
423
+ if (!isFirst) console.clear()
424
+ isFirst = false
425
+
426
+ if (override.startup) {
402
427
  const logger = compiler.getInfrastructureLogger('edu-scripts')
403
- override.startup({ logger, chalk: require('chalk'), compiler })
404
- })
405
- )
428
+ override.startup({ logger, chalk, compiler })
429
+ }
430
+ console.log(stats.toString({ preset: 'errors-warnings', timings: true, colors: true }))
431
+ })
406
432
  }),
407
433
  ].filter(Boolean),
408
434
  optimization: {
package/src/start.js CHANGED
@@ -18,6 +18,15 @@ export default async function start(args) {
18
18
  process.env.PORT = port
19
19
 
20
20
  const compiler = rspack(getConfig(args))
21
+ const middleware = rspack.lazyCompilationMiddleware(compiler)
22
+ const oldSetupMiddlewares = compiler.options.devServer.setupMiddlewares
23
+ compiler.options.devServer.setupMiddlewares = (middlewares, devServer) => {
24
+ if (oldSetupMiddlewares) {
25
+ middlewares = oldSetupMiddlewares(middlewares, devServer)
26
+ }
27
+ middlewares.unshift(middleware)
28
+ return middlewares
29
+ }
21
30
  const devServer = new RspackDevServer(compiler.options.devServer, compiler)
22
31
  devServer.start()
23
32
  ;[('SIGINT', 'SIGTERM')].forEach(function (sig) {
@@ -56,7 +56,7 @@ export type Config = {
56
56
  */
57
57
  mock?: boolean
58
58
  /**
59
- * 开发模式启动后只执行一次的函数,用来展示启动后的提示信息,或者自定义的逻辑
59
+ * 开发模式启动后用来展示启动后的提示信息,或者自定义的逻辑
60
60
  */
61
61
  startup?: (params: {
62
62
  /** 控制台输出内容 */