unplugin-stylex 0.6.1 → 0.6.2
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 +6 -0
- package/README.md +11 -0
- package/dist/astro.cjs +23 -18
- package/dist/astro.js +14 -9
- package/dist/{chunk-B3OIQQRZ.js → chunk-FEGNQ7CQ.js} +30 -14
- package/dist/{chunk-IU3ZVEOU.cjs → chunk-KKH6K7RE.cjs} +46 -30
- package/dist/{chunk-7LU6DGX6.cjs → chunk-O4FQWPVV.cjs} +2 -2
- package/dist/{chunk-F2LYIKCV.js → chunk-WUKLRLI4.js} +1 -1
- package/dist/esbuild.cjs +2 -2
- package/dist/esbuild.js +1 -1
- package/dist/farm.cjs +2 -2
- package/dist/farm.js +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.js +1 -1
- package/dist/rolldown.cjs +2 -2
- package/dist/rolldown.js +1 -1
- package/dist/rollup.cjs +2 -2
- package/dist/rollup.js +1 -1
- package/dist/rspack.cjs +2 -2
- package/dist/rspack.js +1 -1
- package/dist/vite.cjs +3 -3
- package/dist/vite.js +2 -2
- package/dist/webpack.cjs +2 -2
- package/dist/webpack.js +1 -1
- package/jsr.json +1 -1
- package/package.json +15 -10
- package/tsconfig.json +1 -1
- package/turbo.json +23 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# unplugin-stylex
|
|
2
2
|
|
|
3
|
+
## 0.6.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#281](https://github.com/eryue0220/unplugin-stylex/pull/281) [`e3eb53d`](https://github.com/eryue0220/unplugin-stylex/commit/e3eb53d5f30142cffa5578ec872df7244351bc4f) Thanks [@eryue0220](https://github.com/eryue0220)! - fix windows path error
|
|
8
|
+
|
|
3
9
|
## 0.6.1
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -164,6 +164,17 @@ Current support argument, which may have change in the future
|
|
|
164
164
|
|
|
165
165
|
#### options.stylex.unstable_moduleResolution
|
|
166
166
|
|
|
167
|
+
## Monorepo
|
|
168
|
+
|
|
169
|
+
本仓库使用 [Turborepo](https://turbo.build/repo) 管理 monorepo。在根目录可执行:
|
|
170
|
+
|
|
171
|
+
- `pnpm turbo:build` — 按依赖顺序构建所有包(主包与 examples)
|
|
172
|
+
- `pnpm turbo:test` — 在所有包中运行测试
|
|
173
|
+
- `pnpm turbo:lint` / `pnpm turbo:check` — 在所有包中运行 lint / check
|
|
174
|
+
- `pnpm turbo:dev` — 并行启动所有包的 dev 脚本
|
|
175
|
+
|
|
176
|
+
仅构建主包:`pnpm turbo run build --filter=unplugin-stylex`。仅构建某个 example:`pnpm turbo run build --filter=vite-example`。
|
|
177
|
+
|
|
167
178
|
# Acknowledgments
|
|
168
179
|
|
|
169
180
|
- [@stylexjs/rollup-plugin](https://github.com/facebook/stylex/tree/main/packages/rollup-plugin)
|
package/dist/astro.cjs
CHANGED
|
@@ -1,40 +1,43 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkO4FQWPVVcjs = require('./chunk-O4FQWPVV.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
var _chunkKKH6K7REcjs = require('./chunk-KKH6K7RE.cjs');
|
|
11
13
|
require('./chunk-ZBPRDZS4.cjs');
|
|
12
14
|
|
|
13
15
|
// src/astro.ts
|
|
14
|
-
var _path = require('path'); var path = _interopRequireWildcard(_path);
|
|
15
16
|
function astro(options = {}) {
|
|
16
|
-
const configured =
|
|
17
|
+
const configured = _chunkKKH6K7REcjs.getOptions.call(void 0, { ...options, framework: "vite" });
|
|
17
18
|
const filename = configured.stylex.filename;
|
|
18
19
|
return {
|
|
19
|
-
name:
|
|
20
|
+
name: _chunkKKH6K7REcjs.PLUGIN_NAME,
|
|
20
21
|
hooks: {
|
|
21
22
|
"astro:config:setup": async ({ config, updateConfig, injectScript }) => {
|
|
22
|
-
var _a;
|
|
23
|
+
var _a, _b;
|
|
23
24
|
const astroOptions = {
|
|
24
25
|
...options,
|
|
25
26
|
validExts: _nullishCoalesce(options.validExts, () => ( /\.[mc]?[jt]sx?$|\.astro$|\.stylex$/))
|
|
26
27
|
};
|
|
27
|
-
if (!
|
|
28
|
-
|
|
28
|
+
if (!_chunkKKH6K7REcjs.stylexRulesStore.has(_chunkKKH6K7REcjs.STORE_KEY)) {
|
|
29
|
+
_chunkKKH6K7REcjs.stylexRulesStore.set(_chunkKKH6K7REcjs.STORE_KEY, {});
|
|
29
30
|
}
|
|
30
31
|
config.vite.plugins ??= [];
|
|
31
|
-
const basePlugin =
|
|
32
|
+
const basePlugin = _chunkO4FQWPVVcjs.vite_default.call(void 0, astroOptions);
|
|
32
33
|
const wrappedPlugin = {
|
|
33
34
|
...basePlugin,
|
|
34
|
-
getStylexRules: () =>
|
|
35
|
+
getStylexRules: () => _chunkKKH6K7REcjs.stylexRulesStore.get(_chunkKKH6K7REcjs.STORE_KEY) || {}
|
|
35
36
|
};
|
|
36
37
|
const base = _nullishCoalesce(config.base, () => ( "/"));
|
|
37
|
-
const
|
|
38
|
+
const assetsDir = typeof ((_a = config.build) == null ? void 0 : _a.assets) === "string" ? config.build.assets : "_astro";
|
|
39
|
+
const fileName = _chunkKKH6K7REcjs.getStylexAssetFileName.call(void 0, filename, assetsDir);
|
|
40
|
+
const cssPath = _chunkKKH6K7REcjs.getStylexPublicPath.call(void 0, base, fileName);
|
|
38
41
|
injectScript(
|
|
39
42
|
"head-inline",
|
|
40
43
|
`
|
|
@@ -47,7 +50,7 @@ function astro(options = {}) {
|
|
|
47
50
|
`
|
|
48
51
|
);
|
|
49
52
|
config.vite.plugins.push(wrappedPlugin);
|
|
50
|
-
const currentNoExternal = _nullishCoalesce(((
|
|
53
|
+
const currentNoExternal = _nullishCoalesce(((_b = config.vite.ssr) == null ? void 0 : _b.noExternal), () => ( []));
|
|
51
54
|
const noExternal = Array.isArray(currentNoExternal) ? [...currentNoExternal] : [];
|
|
52
55
|
if (!noExternal.includes("@stylexjs/stylex")) {
|
|
53
56
|
noExternal.push("@stylexjs/stylex");
|
|
@@ -63,11 +66,13 @@ function astro(options = {}) {
|
|
|
63
66
|
"astro:server:setup": ({ server }) => {
|
|
64
67
|
server.middlewares.use((req, res, next) => {
|
|
65
68
|
var _a, _b;
|
|
66
|
-
const
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
const assetsDir = "_astro";
|
|
70
|
+
const fileName = _chunkKKH6K7REcjs.getStylexAssetFileName.call(void 0, filename, assetsDir);
|
|
71
|
+
const cssPath = _chunkKKH6K7REcjs.getStylexPublicPath.call(void 0, "/", fileName);
|
|
72
|
+
const normalizedUrl = (_a = req.url) == null ? void 0 : _a.split("?")[0];
|
|
73
|
+
if (normalizedUrl === cssPath || normalizedUrl === `/${filename}` || (normalizedUrl == null ? void 0 : normalizedUrl.endsWith(`/${filename}`)) || normalizedUrl === filename) {
|
|
74
|
+
const stylexRules = _nullishCoalesce(_chunkKKH6K7REcjs.stylexRulesStore.get(_chunkKKH6K7REcjs.STORE_KEY), () => ( {}));
|
|
75
|
+
const collectedCSS = _chunkKKH6K7REcjs.buildStylexRules.call(void 0, stylexRules, _nullishCoalesce(((_b = options.stylex) == null ? void 0 : _b.useCSSLayers), () => ( false)));
|
|
71
76
|
res.setHeader("Content-Type", "text/css");
|
|
72
77
|
res.setHeader("Cache-Control", "no-cache");
|
|
73
78
|
res.end(_nullishCoalesce(collectedCSS, () => ( "")));
|
package/dist/astro.js
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
2
|
vite_default
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-WUKLRLI4.js";
|
|
4
4
|
import {
|
|
5
5
|
PLUGIN_NAME,
|
|
6
6
|
STORE_KEY,
|
|
7
7
|
buildStylexRules,
|
|
8
8
|
getOptions,
|
|
9
|
+
getStylexAssetFileName,
|
|
10
|
+
getStylexPublicPath,
|
|
9
11
|
stylexRulesStore
|
|
10
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-FEGNQ7CQ.js";
|
|
11
13
|
import "./chunk-6F4PWJZI.js";
|
|
12
14
|
|
|
13
15
|
// src/astro.ts
|
|
14
|
-
import * as path from "path";
|
|
15
16
|
function astro(options = {}) {
|
|
16
17
|
const configured = getOptions({ ...options, framework: "vite" });
|
|
17
18
|
const filename = configured.stylex.filename;
|
|
@@ -19,7 +20,7 @@ function astro(options = {}) {
|
|
|
19
20
|
name: PLUGIN_NAME,
|
|
20
21
|
hooks: {
|
|
21
22
|
"astro:config:setup": async ({ config, updateConfig, injectScript }) => {
|
|
22
|
-
var _a;
|
|
23
|
+
var _a, _b;
|
|
23
24
|
const astroOptions = {
|
|
24
25
|
...options,
|
|
25
26
|
validExts: options.validExts ?? /\.[mc]?[jt]sx?$|\.astro$|\.stylex$/
|
|
@@ -34,7 +35,9 @@ function astro(options = {}) {
|
|
|
34
35
|
getStylexRules: () => stylexRulesStore.get(STORE_KEY) || {}
|
|
35
36
|
};
|
|
36
37
|
const base = config.base ?? "/";
|
|
37
|
-
const
|
|
38
|
+
const assetsDir = typeof ((_a = config.build) == null ? void 0 : _a.assets) === "string" ? config.build.assets : "_astro";
|
|
39
|
+
const fileName = getStylexAssetFileName(filename, assetsDir);
|
|
40
|
+
const cssPath = getStylexPublicPath(base, fileName);
|
|
38
41
|
injectScript(
|
|
39
42
|
"head-inline",
|
|
40
43
|
`
|
|
@@ -47,7 +50,7 @@ function astro(options = {}) {
|
|
|
47
50
|
`
|
|
48
51
|
);
|
|
49
52
|
config.vite.plugins.push(wrappedPlugin);
|
|
50
|
-
const currentNoExternal = ((
|
|
53
|
+
const currentNoExternal = ((_b = config.vite.ssr) == null ? void 0 : _b.noExternal) ?? [];
|
|
51
54
|
const noExternal = Array.isArray(currentNoExternal) ? [...currentNoExternal] : [];
|
|
52
55
|
if (!noExternal.includes("@stylexjs/stylex")) {
|
|
53
56
|
noExternal.push("@stylexjs/stylex");
|
|
@@ -63,9 +66,11 @@ function astro(options = {}) {
|
|
|
63
66
|
"astro:server:setup": ({ server }) => {
|
|
64
67
|
server.middlewares.use((req, res, next) => {
|
|
65
68
|
var _a, _b;
|
|
66
|
-
const
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
+
const assetsDir = "_astro";
|
|
70
|
+
const fileName = getStylexAssetFileName(filename, assetsDir);
|
|
71
|
+
const cssPath = getStylexPublicPath("/", fileName);
|
|
72
|
+
const normalizedUrl = (_a = req.url) == null ? void 0 : _a.split("?")[0];
|
|
73
|
+
if (normalizedUrl === cssPath || normalizedUrl === `/${filename}` || (normalizedUrl == null ? void 0 : normalizedUrl.endsWith(`/${filename}`)) || normalizedUrl === filename) {
|
|
69
74
|
const stylexRules = stylexRulesStore.get(STORE_KEY) ?? {};
|
|
70
75
|
const collectedCSS = buildStylexRules(stylexRules, ((_b = options.stylex) == null ? void 0 : _b.useCSSLayers) ?? false);
|
|
71
76
|
res.setHeader("Content-Type", "text/css");
|
|
@@ -6,7 +6,7 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
|
|
|
6
6
|
});
|
|
7
7
|
|
|
8
8
|
// src/index.ts
|
|
9
|
-
import * as
|
|
9
|
+
import * as path3 from "path";
|
|
10
10
|
import { createUnplugin } from "unplugin";
|
|
11
11
|
|
|
12
12
|
// src/core/build.ts
|
|
@@ -255,6 +255,19 @@ function getAliases(framework) {
|
|
|
255
255
|
var STORE_KEY = `stylex-${PLUGIN_NAME}`;
|
|
256
256
|
var stylexRulesStore = /* @__PURE__ */ new Map();
|
|
257
257
|
|
|
258
|
+
// src/utils/stylex-path.ts
|
|
259
|
+
import * as path2 from "path";
|
|
260
|
+
function getStylexAssetFileName(filename, assetsDir = "assets") {
|
|
261
|
+
const normalizedAssetsDir = assetsDir.replace(/[\\/]+$/, "");
|
|
262
|
+
return normalizedAssetsDir ? `${normalizedAssetsDir}/${filename}` : filename;
|
|
263
|
+
}
|
|
264
|
+
function getStylexPublicPath(base, fileName) {
|
|
265
|
+
return path2.posix.join(base ?? "/", fileName.replace(/\\/g, "/")).replace(/\/+/g, "/");
|
|
266
|
+
}
|
|
267
|
+
function normalizePath(file) {
|
|
268
|
+
return file.replace(/\\/g, "/");
|
|
269
|
+
}
|
|
270
|
+
|
|
258
271
|
// src/core/options.ts
|
|
259
272
|
function getOptions(options) {
|
|
260
273
|
var _a, _b, _c;
|
|
@@ -425,17 +438,17 @@ var unpluginFactory = (rawOptions, meta) => {
|
|
|
425
438
|
name: PLUGIN_NAME,
|
|
426
439
|
transformInclude(id) {
|
|
427
440
|
const validExts = options.validExts;
|
|
428
|
-
const extname2 =
|
|
441
|
+
const extname2 = path3.extname(id);
|
|
429
442
|
const questionMarkIndex = extname2.indexOf("?");
|
|
430
443
|
const validExtName = questionMarkIndex > -1 ? extname2.slice(0, questionMarkIndex) : extname2;
|
|
431
444
|
return validExts instanceof RegExp ? validExts.test(validExtName) : validExts.includes(validExtName);
|
|
432
445
|
},
|
|
433
446
|
async transform(code, id) {
|
|
434
|
-
var _a;
|
|
435
|
-
const
|
|
436
|
-
const
|
|
437
|
-
const
|
|
438
|
-
const extname2 =
|
|
447
|
+
var _a, _b, _c, _d;
|
|
448
|
+
const file = id.split("?")[0];
|
|
449
|
+
const normalizedFile = normalizePath(file);
|
|
450
|
+
const normalizedId = normalizePath(id);
|
|
451
|
+
const extname2 = path3.extname(file).slice(1);
|
|
439
452
|
if (!options.stylex.stylexImports.some((importName) => code.includes(importName))) {
|
|
440
453
|
return;
|
|
441
454
|
}
|
|
@@ -448,8 +461,9 @@ var unpluginFactory = (rawOptions, meta) => {
|
|
|
448
461
|
try {
|
|
449
462
|
const transformer = transformers[extname2] ?? transformers.default;
|
|
450
463
|
const result = await transformer(context);
|
|
451
|
-
|
|
452
|
-
|
|
464
|
+
const transformedRules = ((_a = result.stylexRules) == null ? void 0 : _a[file]) ?? ((_b = result.stylexRules) == null ? void 0 : _b[normalizedFile]) ?? ((_c = result.stylexRules) == null ? void 0 : _c[id]) ?? ((_d = result.stylexRules) == null ? void 0 : _d[normalizedId]);
|
|
465
|
+
if (transformedRules) {
|
|
466
|
+
stylexRules[normalizedFile] = transformedRules;
|
|
453
467
|
}
|
|
454
468
|
return result;
|
|
455
469
|
} catch (error) {
|
|
@@ -481,8 +495,8 @@ var unpluginFactory = (rawOptions, meta) => {
|
|
|
481
495
|
next();
|
|
482
496
|
return;
|
|
483
497
|
}
|
|
484
|
-
const fileName =
|
|
485
|
-
const cssPath =
|
|
498
|
+
const fileName = getStylexAssetFileName(options.stylex.filename, ((_a = viteConfig == null ? void 0 : viteConfig.build) == null ? void 0 : _a.assetsDir) ?? "assets");
|
|
499
|
+
const cssPath = getStylexPublicPath(viteConfig == null ? void 0 : viteConfig.base, fileName);
|
|
486
500
|
const basePath = ((viteConfig == null ? void 0 : viteConfig.base) ?? "/").replace(/\/+$/, "") || "/";
|
|
487
501
|
const filename = options.stylex.filename;
|
|
488
502
|
const normalizedUrl = req.url.split("?")[0];
|
|
@@ -499,7 +513,7 @@ var unpluginFactory = (rawOptions, meta) => {
|
|
|
499
513
|
},
|
|
500
514
|
buildEnd() {
|
|
501
515
|
var _a;
|
|
502
|
-
const fileName =
|
|
516
|
+
const fileName = getStylexAssetFileName(options.stylex.filename, ((_a = viteConfig == null ? void 0 : viteConfig.build) == null ? void 0 : _a.assetsDir) ?? "assets");
|
|
503
517
|
const collectedCSS = buildStylexRules(stylexRules, options.stylex.useCSSLayers);
|
|
504
518
|
if (!collectedCSS) return;
|
|
505
519
|
this.emitFile({
|
|
@@ -510,12 +524,12 @@ var unpluginFactory = (rawOptions, meta) => {
|
|
|
510
524
|
},
|
|
511
525
|
transformIndexHtml(html, ctx) {
|
|
512
526
|
var _a, _b;
|
|
513
|
-
const fileName =
|
|
527
|
+
const fileName = getStylexAssetFileName(options.stylex.filename, ((_a = viteConfig == null ? void 0 : viteConfig.build) == null ? void 0 : _a.assetsDir) ?? "assets");
|
|
514
528
|
const css = (_b = ctx.bundle) == null ? void 0 : _b[fileName];
|
|
515
529
|
if (!css) {
|
|
516
530
|
return html;
|
|
517
531
|
}
|
|
518
|
-
const publicPath =
|
|
532
|
+
const publicPath = getStylexPublicPath(viteConfig == null ? void 0 : viteConfig.base, fileName);
|
|
519
533
|
return [
|
|
520
534
|
{
|
|
521
535
|
tag: "link",
|
|
@@ -538,6 +552,8 @@ export {
|
|
|
538
552
|
PLUGIN_NAME,
|
|
539
553
|
STORE_KEY,
|
|
540
554
|
stylexRulesStore,
|
|
555
|
+
getStylexAssetFileName,
|
|
556
|
+
getStylexPublicPath,
|
|
541
557
|
getOptions,
|
|
542
558
|
unpluginFactory,
|
|
543
559
|
unplugin,
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
});
|
|
7
7
|
|
|
8
8
|
// src/index.ts
|
|
9
|
-
var _path = require('path'); var path2 = _interopRequireWildcard(_path);
|
|
9
|
+
var _path = require('path'); var path3 = _interopRequireWildcard(_path); var path2 = _interopRequireWildcard(_path);
|
|
10
10
|
var _unplugin = require('unplugin');
|
|
11
11
|
|
|
12
12
|
// src/core/build.ts
|
|
@@ -26,10 +26,10 @@ var EXTENSIONS = [".js", ".mjs", ".cjs", ".ts", ".mts", ".cts"];
|
|
|
26
26
|
var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs);
|
|
27
27
|
|
|
28
28
|
function makePathAbsolute(value) {
|
|
29
|
-
return
|
|
29
|
+
return path3.default.isAbsolute(value) ? value : path3.default.resolve(process.cwd(), value);
|
|
30
30
|
}
|
|
31
31
|
function isTSProject() {
|
|
32
|
-
const tsConfigPath =
|
|
32
|
+
const tsConfigPath = path3.default.resolve(process.cwd(), "tsconfig.json");
|
|
33
33
|
return _fs2.default.existsSync(tsConfigPath);
|
|
34
34
|
}
|
|
35
35
|
function getAliasesFromTSConfig() {
|
|
@@ -38,7 +38,7 @@ function getAliasesFromTSConfig() {
|
|
|
38
38
|
return void 0;
|
|
39
39
|
}
|
|
40
40
|
try {
|
|
41
|
-
const tsConfigPath =
|
|
41
|
+
const tsConfigPath = path3.default.resolve(process.cwd(), "tsconfig.json");
|
|
42
42
|
const tsConfigContent = _fs2.default.readFileSync(tsConfigPath, "utf8");
|
|
43
43
|
const tsConfig = JSON.parse(tsConfigContent);
|
|
44
44
|
const paths = ((_a = tsConfig == null ? void 0 : tsConfig.compilerOptions) == null ? void 0 : _a.paths) || {};
|
|
@@ -57,12 +57,12 @@ function getAliasesFromTSConfig() {
|
|
|
57
57
|
function getAliasesFromViteConfig() {
|
|
58
58
|
var _a;
|
|
59
59
|
const configFiles = EXTENSIONS.map((ext) => `vite.config${ext}`);
|
|
60
|
-
const configPath = configFiles.find((file) => _fs2.default.existsSync(
|
|
60
|
+
const configPath = configFiles.find((file) => _fs2.default.existsSync(path3.default.resolve(process.cwd(), file)));
|
|
61
61
|
if (!configPath) {
|
|
62
62
|
return {};
|
|
63
63
|
}
|
|
64
64
|
try {
|
|
65
|
-
const configModule = __require(
|
|
65
|
+
const configModule = __require(path3.default.resolve(process.cwd(), configPath));
|
|
66
66
|
const config = typeof configModule === "function" ? configModule() : configModule.default || configModule;
|
|
67
67
|
const aliases = ((_a = config == null ? void 0 : config.resolve) == null ? void 0 : _a.alias) || {};
|
|
68
68
|
return Object.entries(aliases).reduce(
|
|
@@ -79,12 +79,12 @@ function getAliasesFromViteConfig() {
|
|
|
79
79
|
function getAliasesFromWebpackConfig() {
|
|
80
80
|
var _a;
|
|
81
81
|
const configFiles = EXTENSIONS.map((ext) => `webpack.config${ext}`);
|
|
82
|
-
const configPath = configFiles.find((file) => _fs2.default.existsSync(
|
|
82
|
+
const configPath = configFiles.find((file) => _fs2.default.existsSync(path3.default.resolve(process.cwd(), file)));
|
|
83
83
|
if (!configPath) {
|
|
84
84
|
return {};
|
|
85
85
|
}
|
|
86
86
|
try {
|
|
87
|
-
const configContent = _fs2.default.readFileSync(
|
|
87
|
+
const configContent = _fs2.default.readFileSync(path3.default.resolve(process.cwd(), configPath), "utf8");
|
|
88
88
|
const config = JSON.parse(configContent);
|
|
89
89
|
const aliases = ((_a = config == null ? void 0 : config.resolve) == null ? void 0 : _a.alias) || {};
|
|
90
90
|
return Object.entries(aliases).reduce(
|
|
@@ -101,12 +101,12 @@ function getAliasesFromWebpackConfig() {
|
|
|
101
101
|
function getAliasesFromRollupConfig() {
|
|
102
102
|
var _a, _b;
|
|
103
103
|
const configFiles = EXTENSIONS.map((ext) => `rollup.config${ext}`);
|
|
104
|
-
const configPath = configFiles.find((file) => _fs2.default.existsSync(
|
|
104
|
+
const configPath = configFiles.find((file) => _fs2.default.existsSync(path3.default.resolve(process.cwd(), file)));
|
|
105
105
|
if (!configPath) {
|
|
106
106
|
return {};
|
|
107
107
|
}
|
|
108
108
|
try {
|
|
109
|
-
const configModule = __require(
|
|
109
|
+
const configModule = __require(path3.default.resolve(process.cwd(), configPath));
|
|
110
110
|
const config = typeof configModule === "function" ? configModule() : configModule.default || configModule;
|
|
111
111
|
const aliasPlugin = (_a = config == null ? void 0 : config.plugins) == null ? void 0 : _a.find((plugin) => {
|
|
112
112
|
if (typeof plugin === "object" && plugin !== null) {
|
|
@@ -132,12 +132,12 @@ function getAliasesFromRollupConfig() {
|
|
|
132
132
|
function getAliasesFromRolldownConfig() {
|
|
133
133
|
var _a;
|
|
134
134
|
const configFiles = EXTENSIONS.map((ext) => `vite.config${ext}`);
|
|
135
|
-
const configPath = configFiles.find((file) => _fs2.default.existsSync(
|
|
135
|
+
const configPath = configFiles.find((file) => _fs2.default.existsSync(path3.default.resolve(process.cwd(), file)));
|
|
136
136
|
if (!configPath) {
|
|
137
137
|
return {};
|
|
138
138
|
}
|
|
139
139
|
try {
|
|
140
|
-
const configModule = __require(
|
|
140
|
+
const configModule = __require(path3.default.resolve(process.cwd(), configPath));
|
|
141
141
|
const config = typeof configModule === "function" ? configModule() : configModule.default || configModule;
|
|
142
142
|
const aliases = ((_a = config == null ? void 0 : config.resolve) == null ? void 0 : _a.alias) || {};
|
|
143
143
|
return Object.entries(aliases).reduce(
|
|
@@ -157,12 +157,12 @@ function getAliasesFromEsbuildConfig() {
|
|
|
157
157
|
function getAliasesFromRspackConfig() {
|
|
158
158
|
var _a;
|
|
159
159
|
const configFiles = EXTENSIONS.map((ext) => `rspack.config${ext}`);
|
|
160
|
-
const configPath = configFiles.find((file) => _fs2.default.existsSync(
|
|
160
|
+
const configPath = configFiles.find((file) => _fs2.default.existsSync(path3.default.resolve(process.cwd(), file)));
|
|
161
161
|
if (!configPath) {
|
|
162
162
|
return {};
|
|
163
163
|
}
|
|
164
164
|
try {
|
|
165
|
-
const configContent = _fs2.default.readFileSync(
|
|
165
|
+
const configContent = _fs2.default.readFileSync(path3.default.resolve(process.cwd(), configPath), "utf8");
|
|
166
166
|
const config = JSON.parse(configContent);
|
|
167
167
|
const aliases = ((_a = config == null ? void 0 : config.resolve) == null ? void 0 : _a.alias) || {};
|
|
168
168
|
return Object.entries(aliases).reduce(
|
|
@@ -179,12 +179,12 @@ function getAliasesFromRspackConfig() {
|
|
|
179
179
|
function getAliasesFromFarmConfig() {
|
|
180
180
|
var _a;
|
|
181
181
|
const configFiles = EXTENSIONS.map((ext) => `farm.config${ext}`);
|
|
182
|
-
const configPath = configFiles.find((file) => _fs2.default.existsSync(
|
|
182
|
+
const configPath = configFiles.find((file) => _fs2.default.existsSync(path3.default.resolve(process.cwd(), file)));
|
|
183
183
|
if (!configPath) {
|
|
184
184
|
return {};
|
|
185
185
|
}
|
|
186
186
|
try {
|
|
187
|
-
const configModule = __require(
|
|
187
|
+
const configModule = __require(path3.default.resolve(process.cwd(), configPath));
|
|
188
188
|
const config = typeof configModule === "function" ? configModule() : configModule.default || configModule;
|
|
189
189
|
const aliases = ((_a = config == null ? void 0 : config.resolve) == null ? void 0 : _a.alias) || {};
|
|
190
190
|
return Object.entries(aliases).reduce(
|
|
@@ -255,6 +255,19 @@ function getAliases(framework) {
|
|
|
255
255
|
var STORE_KEY = `stylex-${PLUGIN_NAME}`;
|
|
256
256
|
var stylexRulesStore = /* @__PURE__ */ new Map();
|
|
257
257
|
|
|
258
|
+
// src/utils/stylex-path.ts
|
|
259
|
+
|
|
260
|
+
function getStylexAssetFileName(filename, assetsDir = "assets") {
|
|
261
|
+
const normalizedAssetsDir = assetsDir.replace(/[\\/]+$/, "");
|
|
262
|
+
return normalizedAssetsDir ? `${normalizedAssetsDir}/${filename}` : filename;
|
|
263
|
+
}
|
|
264
|
+
function getStylexPublicPath(base, fileName) {
|
|
265
|
+
return path2.posix.join(_nullishCoalesce(base, () => ( "/")), fileName.replace(/\\/g, "/")).replace(/\/+/g, "/");
|
|
266
|
+
}
|
|
267
|
+
function normalizePath(file) {
|
|
268
|
+
return file.replace(/\\/g, "/");
|
|
269
|
+
}
|
|
270
|
+
|
|
258
271
|
// src/core/options.ts
|
|
259
272
|
function getOptions(options) {
|
|
260
273
|
var _a, _b, _c;
|
|
@@ -425,17 +438,17 @@ var unpluginFactory = (rawOptions, meta) => {
|
|
|
425
438
|
name: PLUGIN_NAME,
|
|
426
439
|
transformInclude(id) {
|
|
427
440
|
const validExts = options.validExts;
|
|
428
|
-
const extname2 =
|
|
441
|
+
const extname2 = path3.extname(id);
|
|
429
442
|
const questionMarkIndex = extname2.indexOf("?");
|
|
430
443
|
const validExtName = questionMarkIndex > -1 ? extname2.slice(0, questionMarkIndex) : extname2;
|
|
431
444
|
return validExts instanceof RegExp ? validExts.test(validExtName) : validExts.includes(validExtName);
|
|
432
445
|
},
|
|
433
446
|
async transform(code, id) {
|
|
434
|
-
var _a;
|
|
435
|
-
const
|
|
436
|
-
const
|
|
437
|
-
const
|
|
438
|
-
const extname2 =
|
|
447
|
+
var _a, _b, _c, _d;
|
|
448
|
+
const file = id.split("?")[0];
|
|
449
|
+
const normalizedFile = normalizePath(file);
|
|
450
|
+
const normalizedId = normalizePath(id);
|
|
451
|
+
const extname2 = path3.extname(file).slice(1);
|
|
439
452
|
if (!options.stylex.stylexImports.some((importName) => code.includes(importName))) {
|
|
440
453
|
return;
|
|
441
454
|
}
|
|
@@ -448,8 +461,9 @@ var unpluginFactory = (rawOptions, meta) => {
|
|
|
448
461
|
try {
|
|
449
462
|
const transformer = _nullishCoalesce(transformers[extname2], () => ( transformers.default));
|
|
450
463
|
const result = await transformer(context);
|
|
451
|
-
|
|
452
|
-
|
|
464
|
+
const transformedRules = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(((_a = result.stylexRules) == null ? void 0 : _a[file]), () => ( ((_b = result.stylexRules) == null ? void 0 : _b[normalizedFile]))), () => ( ((_c = result.stylexRules) == null ? void 0 : _c[id]))), () => ( ((_d = result.stylexRules) == null ? void 0 : _d[normalizedId])));
|
|
465
|
+
if (transformedRules) {
|
|
466
|
+
stylexRules[normalizedFile] = transformedRules;
|
|
453
467
|
}
|
|
454
468
|
return result;
|
|
455
469
|
} catch (error) {
|
|
@@ -481,8 +495,8 @@ var unpluginFactory = (rawOptions, meta) => {
|
|
|
481
495
|
next();
|
|
482
496
|
return;
|
|
483
497
|
}
|
|
484
|
-
const fileName =
|
|
485
|
-
const cssPath =
|
|
498
|
+
const fileName = getStylexAssetFileName(options.stylex.filename, _nullishCoalesce(((_a = viteConfig == null ? void 0 : viteConfig.build) == null ? void 0 : _a.assetsDir), () => ( "assets")));
|
|
499
|
+
const cssPath = getStylexPublicPath(viteConfig == null ? void 0 : viteConfig.base, fileName);
|
|
486
500
|
const basePath = (_nullishCoalesce((viteConfig == null ? void 0 : viteConfig.base), () => ( "/"))).replace(/\/+$/, "") || "/";
|
|
487
501
|
const filename = options.stylex.filename;
|
|
488
502
|
const normalizedUrl = req.url.split("?")[0];
|
|
@@ -499,7 +513,7 @@ var unpluginFactory = (rawOptions, meta) => {
|
|
|
499
513
|
},
|
|
500
514
|
buildEnd() {
|
|
501
515
|
var _a;
|
|
502
|
-
const fileName =
|
|
516
|
+
const fileName = getStylexAssetFileName(options.stylex.filename, _nullishCoalesce(((_a = viteConfig == null ? void 0 : viteConfig.build) == null ? void 0 : _a.assetsDir), () => ( "assets")));
|
|
503
517
|
const collectedCSS = buildStylexRules(stylexRules, options.stylex.useCSSLayers);
|
|
504
518
|
if (!collectedCSS) return;
|
|
505
519
|
this.emitFile({
|
|
@@ -510,12 +524,12 @@ var unpluginFactory = (rawOptions, meta) => {
|
|
|
510
524
|
},
|
|
511
525
|
transformIndexHtml(html, ctx) {
|
|
512
526
|
var _a, _b;
|
|
513
|
-
const fileName =
|
|
527
|
+
const fileName = getStylexAssetFileName(options.stylex.filename, _nullishCoalesce(((_a = viteConfig == null ? void 0 : viteConfig.build) == null ? void 0 : _a.assetsDir), () => ( "assets")));
|
|
514
528
|
const css = (_b = ctx.bundle) == null ? void 0 : _b[fileName];
|
|
515
529
|
if (!css) {
|
|
516
530
|
return html;
|
|
517
531
|
}
|
|
518
|
-
const publicPath =
|
|
532
|
+
const publicPath = getStylexPublicPath(viteConfig == null ? void 0 : viteConfig.base, fileName);
|
|
519
533
|
return [
|
|
520
534
|
{
|
|
521
535
|
tag: "link",
|
|
@@ -542,4 +556,6 @@ var index_default = unplugin;
|
|
|
542
556
|
|
|
543
557
|
|
|
544
558
|
|
|
545
|
-
|
|
559
|
+
|
|
560
|
+
|
|
561
|
+
exports.buildStylexRules = buildStylexRules; exports.PLUGIN_NAME = PLUGIN_NAME; exports.STORE_KEY = STORE_KEY; exports.stylexRulesStore = stylexRulesStore; exports.getStylexAssetFileName = getStylexAssetFileName; exports.getStylexPublicPath = getStylexPublicPath; exports.getOptions = getOptions; exports.unpluginFactory = unpluginFactory; exports.unplugin = unplugin; exports.index_default = index_default;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkKKH6K7REcjs = require('./chunk-KKH6K7RE.cjs');
|
|
4
4
|
|
|
5
5
|
// src/vite.ts
|
|
6
6
|
var _unplugin = require('unplugin');
|
|
7
|
-
var vitePlugin = _unplugin.createVitePlugin.call(void 0,
|
|
7
|
+
var vitePlugin = _unplugin.createVitePlugin.call(void 0, _chunkKKH6K7REcjs.unpluginFactory);
|
|
8
8
|
var vite_default = vitePlugin;
|
|
9
9
|
|
|
10
10
|
|
package/dist/esbuild.cjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkKKH6K7REcjs = require('./chunk-KKH6K7RE.cjs');
|
|
4
4
|
require('./chunk-ZBPRDZS4.cjs');
|
|
5
5
|
|
|
6
6
|
// src/esbuild.ts
|
|
7
7
|
var _unplugin = require('unplugin');
|
|
8
|
-
var esbuildPlugin = _unplugin.createEsbuildPlugin.call(void 0,
|
|
8
|
+
var esbuildPlugin = _unplugin.createEsbuildPlugin.call(void 0, _chunkKKH6K7REcjs.unpluginFactory);
|
|
9
9
|
var esbuild_default = esbuildPlugin;
|
|
10
10
|
|
|
11
11
|
|
package/dist/esbuild.js
CHANGED
package/dist/farm.cjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkKKH6K7REcjs = require('./chunk-KKH6K7RE.cjs');
|
|
4
4
|
require('./chunk-ZBPRDZS4.cjs');
|
|
5
5
|
|
|
6
6
|
// src/farm.ts
|
|
7
7
|
var _unplugin = require('unplugin');
|
|
8
|
-
var farmPlugin = _unplugin.createFarmPlugin.call(void 0,
|
|
8
|
+
var farmPlugin = _unplugin.createFarmPlugin.call(void 0, _chunkKKH6K7REcjs.unpluginFactory);
|
|
9
9
|
var farm_default = farmPlugin;
|
|
10
10
|
|
|
11
11
|
|
package/dist/farm.js
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var _chunkKKH6K7REcjs = require('./chunk-KKH6K7RE.cjs');
|
|
6
6
|
require('./chunk-ZBPRDZS4.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
exports.default =
|
|
11
|
+
exports.default = _chunkKKH6K7REcjs.index_default; exports.unplugin = _chunkKKH6K7REcjs.unplugin; exports.unpluginFactory = _chunkKKH6K7REcjs.unpluginFactory;
|
package/dist/index.js
CHANGED
package/dist/rolldown.cjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkKKH6K7REcjs = require('./chunk-KKH6K7RE.cjs');
|
|
4
4
|
require('./chunk-ZBPRDZS4.cjs');
|
|
5
5
|
|
|
6
6
|
// src/rolldown.ts
|
|
7
7
|
var _unplugin = require('unplugin');
|
|
8
|
-
var rolldownPlugin = _unplugin.createRolldownPlugin.call(void 0,
|
|
8
|
+
var rolldownPlugin = _unplugin.createRolldownPlugin.call(void 0, _chunkKKH6K7REcjs.unpluginFactory);
|
|
9
9
|
var rolldown_default = rolldownPlugin;
|
|
10
10
|
|
|
11
11
|
|
package/dist/rolldown.js
CHANGED
package/dist/rollup.cjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkKKH6K7REcjs = require('./chunk-KKH6K7RE.cjs');
|
|
4
4
|
require('./chunk-ZBPRDZS4.cjs');
|
|
5
5
|
|
|
6
6
|
// src/rollup.ts
|
|
7
7
|
var _unplugin = require('unplugin');
|
|
8
|
-
var rollupPlugin = _unplugin.createRollupPlugin.call(void 0,
|
|
8
|
+
var rollupPlugin = _unplugin.createRollupPlugin.call(void 0, _chunkKKH6K7REcjs.unpluginFactory);
|
|
9
9
|
var rollup_default = rollupPlugin;
|
|
10
10
|
|
|
11
11
|
|
package/dist/rollup.js
CHANGED
package/dist/rspack.cjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkKKH6K7REcjs = require('./chunk-KKH6K7RE.cjs');
|
|
4
4
|
require('./chunk-ZBPRDZS4.cjs');
|
|
5
5
|
|
|
6
6
|
// src/rspack.ts
|
|
7
7
|
var _unplugin = require('unplugin');
|
|
8
|
-
var rspackPlugin = _unplugin.createRspackPlugin.call(void 0,
|
|
8
|
+
var rspackPlugin = _unplugin.createRspackPlugin.call(void 0, _chunkKKH6K7REcjs.unpluginFactory);
|
|
9
9
|
var rspack_default = rspackPlugin;
|
|
10
10
|
|
|
11
11
|
|
package/dist/rspack.js
CHANGED
package/dist/vite.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('./chunk-
|
|
3
|
+
var _chunkO4FQWPVVcjs = require('./chunk-O4FQWPVV.cjs');
|
|
4
|
+
require('./chunk-KKH6K7RE.cjs');
|
|
5
5
|
require('./chunk-ZBPRDZS4.cjs');
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
exports.default =
|
|
8
|
+
exports.default = _chunkO4FQWPVVcjs.vite_default;
|
package/dist/vite.js
CHANGED
package/dist/webpack.cjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkKKH6K7REcjs = require('./chunk-KKH6K7RE.cjs');
|
|
4
4
|
require('./chunk-ZBPRDZS4.cjs');
|
|
5
5
|
|
|
6
6
|
// src/webpack.ts
|
|
7
7
|
var _unplugin = require('unplugin');
|
|
8
|
-
var webpackPlugin = _unplugin.createWebpackPlugin.call(void 0,
|
|
8
|
+
var webpackPlugin = _unplugin.createWebpackPlugin.call(void 0, _chunkKKH6K7REcjs.unpluginFactory);
|
|
9
9
|
var webpack_default = webpackPlugin;
|
|
10
10
|
|
|
11
11
|
|
package/dist/webpack.js
CHANGED
package/jsr.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "unplugin-stylex",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.2",
|
|
4
4
|
"description": "Unplugin for stylex",
|
|
5
5
|
"repository": "https://github.com/eryue0220/unplugin-stylex",
|
|
6
6
|
"keywords": [
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"./*": "./*"
|
|
76
76
|
},
|
|
77
77
|
"engines": {
|
|
78
|
-
"node": ">=
|
|
78
|
+
"node": "^20.19.0 || >=22.12.0"
|
|
79
79
|
},
|
|
80
80
|
"peerDependencies": {
|
|
81
81
|
"@stylexjs/stylex": "0.x"
|
|
@@ -86,20 +86,20 @@
|
|
|
86
86
|
"@babel/plugin-syntax-jsx": "^7.28.6",
|
|
87
87
|
"@babel/plugin-syntax-typescript": "^7.28.6",
|
|
88
88
|
"@rollup/pluginutils": "^5.1.4",
|
|
89
|
-
"@stylexjs/babel-plugin": "^0.
|
|
89
|
+
"@stylexjs/babel-plugin": "^0.18.1",
|
|
90
90
|
"unplugin": "^3.0.0"
|
|
91
91
|
},
|
|
92
92
|
"devDependencies": {
|
|
93
|
-
"@biomejs/biome": "2.4.
|
|
94
|
-
"@changesets/changelog-github": "^0.
|
|
95
|
-
"@changesets/cli": "^2.
|
|
96
|
-
"@types/node": "^25.
|
|
93
|
+
"@biomejs/biome": "2.4.7",
|
|
94
|
+
"@changesets/changelog-github": "^0.6.0",
|
|
95
|
+
"@changesets/cli": "^2.30.0",
|
|
96
|
+
"@types/node": "^25.5.0",
|
|
97
97
|
"@vitest/coverage-v8": "^4.0.15",
|
|
98
|
-
"babel-plugin-syntax-hermes-parser": "^0.
|
|
99
|
-
"jsr": "^0.14.
|
|
98
|
+
"babel-plugin-syntax-hermes-parser": "^0.34.0",
|
|
99
|
+
"jsr": "^0.14.3",
|
|
100
100
|
"tsup": "^8.5.1",
|
|
101
101
|
"typescript": "^5.9.3",
|
|
102
|
-
"vite": "^
|
|
102
|
+
"vite": "^8.0.0",
|
|
103
103
|
"vitest": "^4.0.15"
|
|
104
104
|
},
|
|
105
105
|
"scripts": {
|
|
@@ -113,6 +113,11 @@
|
|
|
113
113
|
"format": "pnpm biome format .",
|
|
114
114
|
"format:fix": "pnpm biome format --write .",
|
|
115
115
|
"ci": "pnpm run lint && pnpm run check && pnpm run build",
|
|
116
|
+
"turbo:build": "turbo run build",
|
|
117
|
+
"turbo:test": "turbo run test",
|
|
118
|
+
"turbo:lint": "turbo run lint",
|
|
119
|
+
"turbo:check": "turbo run check",
|
|
120
|
+
"turbo:dev": "turbo run dev",
|
|
116
121
|
"jsr": "pnpm dlx jsr publish",
|
|
117
122
|
"sync:jsr-version": "node scripts/sync-jsr-version.mjs",
|
|
118
123
|
"changeset": "pnpm dlx @changesets/cli add",
|
package/tsconfig.json
CHANGED
package/turbo.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://turbo.build/schema.json",
|
|
3
|
+
"tasks": {
|
|
4
|
+
"build": {
|
|
5
|
+
"dependsOn": ["^build"],
|
|
6
|
+
"outputs": ["dist/**", "build/**", ".astro/**", ".vite/**"]
|
|
7
|
+
},
|
|
8
|
+
"dev": {
|
|
9
|
+
"cache": false,
|
|
10
|
+
"persistent": true
|
|
11
|
+
},
|
|
12
|
+
"test": {
|
|
13
|
+
"outputs": ["coverage/**"]
|
|
14
|
+
},
|
|
15
|
+
"lint": {
|
|
16
|
+
"outputs": []
|
|
17
|
+
},
|
|
18
|
+
"check": {
|
|
19
|
+
"outputs": []
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"globalDependencies": ["tsconfig.json", "biome.json"]
|
|
23
|
+
}
|