@shuvi/toolpack 2.0.0-dev.15 → 2.0.0-dev.17

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.
@@ -43,6 +43,7 @@ const path = __importStar(require("path"));
43
43
  const fs = __importStar(require("fs"));
44
44
  const constants_1 = require("@shuvi/shared/constants");
45
45
  const fix_watching_plugin_1 = __importDefault(require("../plugins/fix-watching-plugin"));
46
+ const crypto = __importStar(require("crypto"));
46
47
  const resolveLocalLoader = (name) => path.join(__dirname, `../loaders/${name}`);
47
48
  function getDefineEnv(env) {
48
49
  return Object.assign(Object.assign({}, Object.keys(process.env).reduce((prev, key) => {
@@ -221,35 +222,41 @@ function baseRspackChain({ dev, outputDir, lightningCss, compiler, projectRoot,
221
222
  'process.env.NODE_ENV': JSON.stringify(dev ? 'development' : 'production')
222
223
  }
223
224
  ]);
224
- // const getCacheConfig = () => {
225
- // const projectHash = crypto
226
- // .createHash('md5')
227
- // .update(projectRoot)
228
- // .digest('hex');
229
- // const stringifiedEnvs = Object.entries({
230
- // ...getDefineEnv(env)
231
- // }).reduce((prev: string, [key, value]) => {
232
- // return `${prev}|${key}=${value}`;
233
- // }, '');
234
- // const PACKAGE_JSON = path.resolve(__dirname, '../../../package.json');
235
- // const SHUVI_VERSION = require(PACKAGE_JSON).version;
236
- // return {
237
- // cacheDirectory: path.join(cacheDir, 'webpack', projectHash),
238
- // type: 'filesystem',
239
- // name: `${name.replace(/\//, '-')}-${config.get('mode')}`,
240
- // version: `${SHUVI_VERSION}|${stringifiedEnvs}`
241
- // };
242
- // };
243
- /**
244
- * @unsupported Rspack only supports `cache: boolean`. Object cache config is not supported.
245
- * See: https://rspack.dev/config/cache
246
- */
247
- // config.cache(
248
- // typeof process.env.SHUVI_DEV_DISABLE_CACHE !== 'undefined'
249
- // ? false
250
- // : getCacheConfig()
251
- // );
252
- config.cache(typeof process.env.SHUVI_DEV_DISABLE_CACHE !== 'undefined' ? false : true);
225
+ const getCacheConfig = () => {
226
+ const projectHash = crypto
227
+ .createHash('md5')
228
+ .update(projectRoot)
229
+ .digest('hex');
230
+ const stringifiedEnvs = Object.entries(Object.assign({}, getDefineEnv(env))).reduce((prev, [key, value]) => {
231
+ return `${prev}|${key}=${value}`;
232
+ }, '');
233
+ const PACKAGE_JSON = path.resolve(__dirname, '../../../package.json');
234
+ const SHUVI_VERSION = require(PACKAGE_JSON).version;
235
+ return {
236
+ cacheDirectory: path.join(cacheDir, 'rspack', projectHash),
237
+ type: 'filesystem',
238
+ name: `${name.replace(/\//, '-')}-${config.get('mode')}`,
239
+ version: `${SHUVI_VERSION}|${stringifiedEnvs}`
240
+ };
241
+ };
242
+ // Enable filesystem cache for Rspack using experiments.cache
243
+ if (typeof process.env.SHUVI_DEV_DISABLE_CACHE === 'undefined') {
244
+ const cacheConfig = getCacheConfig();
245
+ config.cache(true);
246
+ config.set('experiments', {
247
+ cache: {
248
+ type: 'persistent',
249
+ version: cacheConfig.version,
250
+ storage: {
251
+ type: 'filesystem',
252
+ directory: cacheConfig.cacheDirectory
253
+ }
254
+ }
255
+ });
256
+ }
257
+ else {
258
+ config.cache(false);
259
+ }
253
260
  const tsConfigPath = path.join(projectRoot, 'tsconfig.json');
254
261
  const jsConfigPath = path.join(projectRoot, 'jsconfig.json');
255
262
  if (jsConfig === null || jsConfig === void 0 ? void 0 : jsConfig.useTypeScript) {
@@ -154,28 +154,11 @@ function createBrowserRspackChain(options) {
154
154
  return (module.size() > BIG_LIBRARY_THRESHOLD &&
155
155
  helpers_rspack_1.NODE_MODULES_REGEXP.test(module.nameForCondition() || ''));
156
156
  },
157
- /**
158
- * @unsupported Rspack does not support libIdent directly.
159
- */
160
- // name(module: {
161
- // type: string;
162
- // libIdent?: Function;
163
- // updateHash: (hash: crypto.Hash) => void;
164
- // }): string {
165
- // const hash = crypto.createHash('sha1');
166
- // if (module.type === `css/mini-extract`) {
167
- // module.updateHash(hash);
168
- // } else {
169
- // if (!module.libIdent) {
170
- // throw new Error(
171
- // `Encountered unknown module type: ${module.type}. Please open an issue.`
172
- // );
173
- // }
174
- // hash.update(module.libIdent({ context: options.projectRoot }));
175
- // }
176
- // return hash.digest('hex').substring(0, 8);
177
- // },
178
- name: 'lib',
157
+ name(module) {
158
+ const hash = crypto.createHash('sha1');
159
+ hash.update(module.identifier());
160
+ return hash.digest('hex').substring(0, 8);
161
+ },
179
162
  filename: (0, helpers_rspack_1.commonChunkFilename)({ dev: false }),
180
163
  priority: 30,
181
164
  minChunks: 1,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shuvi/toolpack",
3
- "version": "2.0.0-dev.15",
3
+ "version": "2.0.0-dev.17",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/shuvijs/shuvi.git",
@@ -36,9 +36,9 @@
36
36
  "@rspack/cli": "^1.4.2",
37
37
  "@rspack/core": "^1.4.2",
38
38
  "@rspack/plugin-html": "^0.5.8",
39
- "@shuvi/compiler": "2.0.0-dev.15",
40
- "@shuvi/shared": "2.0.0-dev.15",
41
- "@shuvi/utils": "2.0.0-dev.15",
39
+ "@shuvi/compiler": "2.0.0-dev.17",
40
+ "@shuvi/shared": "2.0.0-dev.17",
41
+ "@shuvi/utils": "2.0.0-dev.17",
42
42
  "@swc/helpers": "0.4.3",
43
43
  "babel-loader": "8.2.2",
44
44
  "babel-plugin-syntax-jsx": "6.18.0",