pixui-panamera-configs 0.0.1
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/dist/eslint.d.mts +24 -0
- package/dist/eslint.d.mts.map +1 -0
- package/dist/eslint.mjs +104 -0
- package/dist/eslint.mjs.map +1 -0
- package/dist/stylelint.d.mts +14 -0
- package/dist/stylelint.d.mts.map +1 -0
- package/dist/stylelint.mjs +26 -0
- package/dist/stylelint.mjs.map +1 -0
- package/dist/tsconfig.base.json +32 -0
- package/dist/tsconfig.node.json +14 -0
- package/dist/webpack.d.mts +34 -0
- package/dist/webpack.d.mts.map +1 -0
- package/dist/webpack.mjs +190 -0
- package/dist/webpack.mjs.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Config } from "eslint/config";
|
|
2
|
+
|
|
3
|
+
//#region src/eslint.d.ts
|
|
4
|
+
/** @internal */
|
|
5
|
+
interface PanameraEslintOptions {
|
|
6
|
+
/**
|
|
7
|
+
* 项目根目录,默认 process.cwd()
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
projectRoot?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* 投放项目 ESLint 配置
|
|
14
|
+
*/
|
|
15
|
+
type PanameraEslintConfig = Config[];
|
|
16
|
+
/**
|
|
17
|
+
* 投放项目 ESLint 配置
|
|
18
|
+
*
|
|
19
|
+
* 自动读取 projectRoot 下的 .gitignore 作为忽略规则。
|
|
20
|
+
*/
|
|
21
|
+
declare function panameraEslintConfig(options?: PanameraEslintOptions): PanameraEslintConfig;
|
|
22
|
+
//#endregion
|
|
23
|
+
export { PanameraEslintConfig, PanameraEslintOptions, panameraEslintConfig };
|
|
24
|
+
//# sourceMappingURL=eslint.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eslint.d.mts","names":[],"sources":["../src/eslint.ts"],"mappings":";;;;UAWiB,qBAAA;EAAA;;;;EAKf,WAAA;AAAA;;;;KAMU,oBAAA,GAAuB,MAAA;AAOnC;;;;;AAAA,iBAAgB,oBAAA,CAAqB,OAAA,GAAS,qBAAA,GAA6B,oBAAA"}
|
package/dist/eslint.mjs
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { includeIgnoreFile } from "@eslint/compat";
|
|
3
|
+
import eslint from "@eslint/js";
|
|
4
|
+
import stylistic from "@stylistic/eslint-plugin";
|
|
5
|
+
import { defineConfig } from "eslint/config";
|
|
6
|
+
import tsParserService from "eslint-config-ts-parser-service";
|
|
7
|
+
import importPlugin from "eslint-plugin-import";
|
|
8
|
+
import reactPlugin from "eslint-plugin-react";
|
|
9
|
+
import tseslint from "typescript-eslint";
|
|
10
|
+
//#region src/eslint.ts
|
|
11
|
+
/**
|
|
12
|
+
* 投放项目 ESLint 配置
|
|
13
|
+
*
|
|
14
|
+
* 自动读取 projectRoot 下的 .gitignore 作为忽略规则。
|
|
15
|
+
*/
|
|
16
|
+
function panameraEslintConfig(options = {}) {
|
|
17
|
+
const { projectRoot = process.cwd() } = options;
|
|
18
|
+
return defineConfig(includeIgnoreFile(path.resolve(projectRoot, ".gitignore")), {
|
|
19
|
+
files: ["**/*.?(m|c){js,ts}?(x)"],
|
|
20
|
+
extends: [
|
|
21
|
+
eslint.configs.recommended,
|
|
22
|
+
stylistic.configs.recommended,
|
|
23
|
+
...tseslint.configs.strictTypeChecked,
|
|
24
|
+
...tseslint.configs.stylisticTypeChecked,
|
|
25
|
+
{
|
|
26
|
+
...tseslint.configs.eslintRecommended,
|
|
27
|
+
files: void 0
|
|
28
|
+
},
|
|
29
|
+
reactPlugin.configs.flat.recommended,
|
|
30
|
+
importPlugin.flatConfigs.recommended,
|
|
31
|
+
importPlugin.flatConfigs.typescript,
|
|
32
|
+
tsParserService.configs.resolver,
|
|
33
|
+
{
|
|
34
|
+
languageOptions: { parserOptions: { projectService: true } },
|
|
35
|
+
settings: { react: {
|
|
36
|
+
version: "16.0",
|
|
37
|
+
pragma: "h"
|
|
38
|
+
} }
|
|
39
|
+
},
|
|
40
|
+
{ rules: {
|
|
41
|
+
"@typescript-eslint/await-thenable": "off",
|
|
42
|
+
"@typescript-eslint/no-non-null-assertion": "off",
|
|
43
|
+
"@typescript-eslint/no-empty-object-type": ["error", {
|
|
44
|
+
allowInterfaces: "with-single-extends",
|
|
45
|
+
allowObjectTypes: "always"
|
|
46
|
+
}],
|
|
47
|
+
"@typescript-eslint/no-require-imports": ["error", { allowAsImport: true }],
|
|
48
|
+
"import/namespace": "off",
|
|
49
|
+
"import/no-unresolved": "off",
|
|
50
|
+
"react/no-unknown-property": "off",
|
|
51
|
+
"react/prop-types": ["error", { skipUndeclared: true }]
|
|
52
|
+
} },
|
|
53
|
+
{ rules: {
|
|
54
|
+
"@stylistic/jsx-one-expression-per-line": "off",
|
|
55
|
+
"@typescript-eslint/restrict-template-expressions": ["error", {
|
|
56
|
+
allowAny: false,
|
|
57
|
+
allowBoolean: true,
|
|
58
|
+
allowNullish: true,
|
|
59
|
+
allowNumber: true,
|
|
60
|
+
allowRegExp: true
|
|
61
|
+
}],
|
|
62
|
+
"@typescript-eslint/no-duplicate-type-constituents": "off",
|
|
63
|
+
"@typescript-eslint/no-unused-vars": ["error", {
|
|
64
|
+
args: "all",
|
|
65
|
+
argsIgnorePattern: "^_",
|
|
66
|
+
caughtErrors: "all",
|
|
67
|
+
caughtErrorsIgnorePattern: "^_",
|
|
68
|
+
destructuredArrayIgnorePattern: "^_",
|
|
69
|
+
varsIgnorePattern: "^_",
|
|
70
|
+
ignoreRestSiblings: true,
|
|
71
|
+
enableAutofixRemoval: { imports: true }
|
|
72
|
+
}],
|
|
73
|
+
"import/no-named-as-default-member": "off",
|
|
74
|
+
"import/order": ["warn", {
|
|
75
|
+
alphabetize: {
|
|
76
|
+
order: "asc",
|
|
77
|
+
caseInsensitive: true
|
|
78
|
+
},
|
|
79
|
+
groups: [
|
|
80
|
+
"builtin",
|
|
81
|
+
"external",
|
|
82
|
+
"internal",
|
|
83
|
+
"parent",
|
|
84
|
+
"sibling",
|
|
85
|
+
"index"
|
|
86
|
+
]
|
|
87
|
+
}],
|
|
88
|
+
"no-console": "warn"
|
|
89
|
+
} }
|
|
90
|
+
]
|
|
91
|
+
}, {
|
|
92
|
+
files: ["**/test/**/*.?(m|c){js,ts}?(x)", "**/*.{test,spec}.?(m|c){js,ts}?(x)"],
|
|
93
|
+
rules: {
|
|
94
|
+
"@typescript-eslint/require-await": "off",
|
|
95
|
+
"@typescript-eslint/unbound-method": "off",
|
|
96
|
+
"no-empty-pattern": ["error", { allowObjectPatternsAsParameters: true }],
|
|
97
|
+
"no-console": "off"
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
//#endregion
|
|
102
|
+
export { panameraEslintConfig };
|
|
103
|
+
|
|
104
|
+
//# sourceMappingURL=eslint.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eslint.mjs","names":[],"sources":["../src/eslint.ts"],"mappings":";;;;;;;;;;;;;;;AA6BA,SAAgB,qBAAqB,UAAiC,EAAE,EAAwB;CAC9F,MAAM,EAAE,cAAc,QAAQ,KAAK,KAAK;AAExC,QAAO,aACL,kBAAkB,KAAK,QAAQ,aAAa,aAAa,CAAC,EAE1D;EACE,OAAO,CAAC,yBAAyB;EACjC,SAAS;GACP,OAAO,QAAQ;GACf,UAAU,QAAQ;GAClB,GAAG,SAAS,QAAQ;GACpB,GAAG,SAAS,QAAQ;GAGpB;IACE,GAAG,SAAS,QAAQ;IACpB,OAAO,KAAA;IACR;GACD,YAAY,QAAQ,KAAK;GACzB,aAAa,YAAY;GACzB,aAAa,YAAY;GACzB,gBAAgB,QAAQ;GACxB;IACE,iBAAiB,EACf,eAAe,EACb,gBAAgB,MACjB,EACF;IACD,UAAU,EACR,OAAO;KACL,SAAS;KACT,QAAQ;KACT,EACF;IACF;GAED,EACE,OAAO;IAML,qCAAqC;IAErC,4CAA4C;IAC5C,2CAA2C,CAAC,SAAS;KAMnD,iBAAiB;KAOjB,kBAAkB;KACnB,CAAC;IACF,yCAAyC,CAAC,SAAS,EAAE,eAAe,MAAM,CAAC;IAE3E,oBAAoB;IAEpB,wBAAwB;IAExB,6BAA6B;IAE7B,oBAAoB,CAAC,SAAS,EAAE,gBAAgB,MAAM,CAAC;IACxD,EACF;GAED,EACE,OAAO;IACL,0CAA0C;IAC1C,oDAAoD,CAAC,SAAS;KAC5D,UAAU;KACV,cAAc;KACd,cAAc;KACd,aAAa;KACb,aAAa;KACd,CAAC;IACF,qDAAqD;IACrD,qCAAqC,CAAC,SAAS;KAC7C,MAAM;KACN,mBAAmB;KACnB,cAAc;KACd,2BAA2B;KAC3B,gCAAgC;KAChC,mBAAmB;KACnB,oBAAoB;KACpB,sBAAsB,EACpB,SAAS,MACV;KACF,CAAC;IACF,qCAAqC;IACrC,gBAAgB,CAAC,QAAQ;KACvB,aAAa;MAAE,OAAO;MAAO,iBAAiB;MAAM;KACpD,QAAQ;MAAC;MAAW;MAAY;MAAY;MAAU;MAAW;MAAQ;KAC1E,CAAC;IACF,cAAc;IACf,EACF;GACF;EACF,EAED;EACE,OAAO,CACL,kCACA,qCACD;EACD,OAAO;GAEL,oCAAoC;GAEpC,qCAAqC;GAErC,oBAAoB,CAAC,SAAS,EAAE,iCAAiC,MAAM,CAAC;GACxE,cAAc;GACf;EACF,CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Config } from "stylelint";
|
|
2
|
+
|
|
3
|
+
//#region src/stylelint.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* 投放项目 Stylelint 配置
|
|
6
|
+
*/
|
|
7
|
+
type PanameraStylelintConfig = Omit<Config, 'not-exist-prop'>;
|
|
8
|
+
/**
|
|
9
|
+
* 投放项目 Stylelint 配置
|
|
10
|
+
*/
|
|
11
|
+
declare function panameraStylelintConfig(): PanameraStylelintConfig;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { PanameraStylelintConfig, panameraStylelintConfig };
|
|
14
|
+
//# sourceMappingURL=stylelint.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stylelint.d.mts","names":[],"sources":["../src/stylelint.ts"],"mappings":";;;;;AASA;KAAY,uBAAA,GAA0B,IAAA,CAAK,MAAA;;;;iBAK3B,uBAAA,CAAA,GAA2B,uBAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { fileURLToPath } from "node:url";
|
|
2
|
+
//#region src/stylelint.ts
|
|
3
|
+
const importResolve = (specifier) => fileURLToPath(import.meta.resolve(specifier));
|
|
4
|
+
/**
|
|
5
|
+
* 投放项目 Stylelint 配置
|
|
6
|
+
*/
|
|
7
|
+
function panameraStylelintConfig() {
|
|
8
|
+
return {
|
|
9
|
+
extends: [importResolve("@stylistic/stylelint-config")],
|
|
10
|
+
rules: {
|
|
11
|
+
"selector-class-pattern": "^[a-zA-Z][a-zA-Z0-9-_]*$",
|
|
12
|
+
"keyframes-name-pattern": "^[a-zA-Z][a-zA-Z0-9-_]*$"
|
|
13
|
+
},
|
|
14
|
+
overrides: [{
|
|
15
|
+
files: ["**/*.css"],
|
|
16
|
+
extends: [importResolve("stylelint-config-standard")]
|
|
17
|
+
}, {
|
|
18
|
+
files: ["**/*.less"],
|
|
19
|
+
extends: [importResolve("stylelint-config-standard-scss"), importResolve("stylelint-config-standard-less")]
|
|
20
|
+
}]
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
//#endregion
|
|
24
|
+
export { panameraStylelintConfig };
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=stylelint.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stylelint.mjs","names":[],"sources":["../src/stylelint.ts"],"mappings":";;AAGA,MAAM,iBAAiB,cAAsB,cAAc,OAAO,KAAK,QAAQ,UAAU,CAAC;;;;AAW1F,SAAgB,0BAAmD;AACjE,QAAO;EACL,SAAS,CACP,cAAc,8BAA8B,CAC7C;EACD,OAAO;GACL,0BAA0B;GAC1B,0BAA0B;GAC3B;EACD,WAAW,CACT;GACE,OAAO,CAAC,WAAW;GACnB,SAAS,CAAC,cAAc,4BAA4B,CAAC;GACtD,EACD;GACE,OAAO,CAAC,YAAY;GACpB,SAAS,CACP,cAAc,iCAAiC,EAC/C,cAAc,iCAAiC,CAChD;GACF,CACF;EACF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"composite": true,
|
|
4
|
+
"declaration": true,
|
|
5
|
+
"declarationMap": true,
|
|
6
|
+
"esModuleInterop": true,
|
|
7
|
+
"exactOptionalPropertyTypes": true,
|
|
8
|
+
"isolatedModules": true,
|
|
9
|
+
"jsx": "react",
|
|
10
|
+
"jsxFactory": "h",
|
|
11
|
+
"jsxFragmentFactory": "Fragment",
|
|
12
|
+
"lib": ["ES2022"],
|
|
13
|
+
"module": "preserve",
|
|
14
|
+
"moduleResolution": "bundler",
|
|
15
|
+
"noEmitOnError": true,
|
|
16
|
+
"noUncheckedIndexedAccess": true,
|
|
17
|
+
"noUncheckedSideEffectImports": true,
|
|
18
|
+
"paths": {
|
|
19
|
+
"preact": ["./node_modules/@pixui-dev/pxw/lib/types/preact"],
|
|
20
|
+
"preact/compat": ["./node_modules/@pixui-dev/pxw/lib/types/preact/compat"],
|
|
21
|
+
"preact/hooks": ["./node_modules/@pixui-dev/pxw/lib/types/preact"],
|
|
22
|
+
"preact-router": ["./node_modules/@pixui-dev/pxw/lib/types/preact-router"],
|
|
23
|
+
"react": ["./node_modules/@pixui-dev/pxw/lib/types/preact/compat"]
|
|
24
|
+
},
|
|
25
|
+
"skipLibCheck": true,
|
|
26
|
+
"sourceMap": true,
|
|
27
|
+
"strict": true,
|
|
28
|
+
"target": "es2019",
|
|
29
|
+
"types": [],
|
|
30
|
+
"verbatimModuleSyntax": true
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "./tsconfig.base.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"allowJs": true,
|
|
5
|
+
"composite": true,
|
|
6
|
+
"esModuleInterop": true,
|
|
7
|
+
"maxNodeModuleJsDepth": 1,
|
|
8
|
+
"module": "preserve",
|
|
9
|
+
"moduleResolution": "bundler",
|
|
10
|
+
"noEmit": true,
|
|
11
|
+
"target": "es2022",
|
|
12
|
+
"types": ["node"]
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import webpack from "webpack";
|
|
2
|
+
|
|
3
|
+
//#region src/webpack.d.ts
|
|
4
|
+
/** @internal */
|
|
5
|
+
interface PanameraWebpackOptions {
|
|
6
|
+
/**
|
|
7
|
+
* 工作区根目录(.vscode/settings.json 所在目录),默认 process.cwd()
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
workspaceRoot?: string;
|
|
11
|
+
/**
|
|
12
|
+
* 项目根目录(webpack context),默认与 workspaceRoot 相同
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
15
|
+
projectRoot?: string;
|
|
16
|
+
/**
|
|
17
|
+
* 优先使用项目 node_modules,解决 monorepo 打包引入重复依赖问题
|
|
18
|
+
* @internal
|
|
19
|
+
*/
|
|
20
|
+
preferProjectNodeModules?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* 投放项目 Webpack 配置
|
|
24
|
+
*/
|
|
25
|
+
type PanameraWebpackConfig = (env: unknown, argv: {
|
|
26
|
+
mode: string;
|
|
27
|
+
}) => webpack.Configuration | webpack.MultiConfiguration;
|
|
28
|
+
/**
|
|
29
|
+
* 投放项目 Webpack 配置
|
|
30
|
+
*/
|
|
31
|
+
declare function panameraWebpackConfig(options?: PanameraWebpackOptions): PanameraWebpackConfig;
|
|
32
|
+
//#endregion
|
|
33
|
+
export { PanameraWebpackConfig, PanameraWebpackOptions, panameraWebpackConfig };
|
|
34
|
+
//# sourceMappingURL=webpack.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webpack.d.mts","names":[],"sources":["../src/webpack.ts"],"mappings":";;;;UAqCiB,sBAAA;EAAA;;;;EAKf,aAAA;EAKA;;;;EAAA,WAAA;EAW+B;;;;EAN/B,wBAAA;AAAA;;;;KAMU,qBAAA,IAAyB,GAAA,WAAc,IAAA;EAAQ,IAAA;AAAA,MAAmB,OAAA,CAAQ,aAAA,GAAgB,OAAA,CAAQ,kBAAA;AAK9G;;;AAAA,iBAAgB,qBAAA,CAAsB,OAAA,GAAS,sBAAA,GAA8B,qBAAA"}
|
package/dist/webpack.mjs
ADDED
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import assert from "node:assert/strict";
|
|
4
|
+
import { readFileSync } from "node:fs";
|
|
5
|
+
import pfbs from "@pixui-dev/pxw/config/pfbs.js";
|
|
6
|
+
import { getLocalIP } from "@pixui-dev/pxw/config/util.js";
|
|
7
|
+
import { parse } from "comment-json";
|
|
8
|
+
import ForkTsCheckerWebpackPlugin from "fork-ts-checker-webpack-plugin";
|
|
9
|
+
import HtmlWebpackPlugin from "html-webpack-plugin";
|
|
10
|
+
import MiniCssExtractPlugin from "mini-css-extract-plugin";
|
|
11
|
+
import postcssPxtorem from "postcss-pxtorem";
|
|
12
|
+
//#region \0rolldown/runtime.js
|
|
13
|
+
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
14
|
+
//#endregion
|
|
15
|
+
//#region src/webpack.ts
|
|
16
|
+
const { DefinePlugin, EnvironmentPlugin, NormalModuleReplacementPlugin } = __require("webpack");
|
|
17
|
+
const pages = [{
|
|
18
|
+
name: "app",
|
|
19
|
+
template: "./src/app/index.html",
|
|
20
|
+
entry: "./src/app/main.tsx",
|
|
21
|
+
outputHtml: "index.html"
|
|
22
|
+
}, {
|
|
23
|
+
name: "preprocess",
|
|
24
|
+
template: "./src/preprocess/index.html",
|
|
25
|
+
entry: "./src/preprocess/main.tsx",
|
|
26
|
+
outputHtml: "preprocess.html"
|
|
27
|
+
}];
|
|
28
|
+
/**
|
|
29
|
+
* 投放项目 Webpack 配置
|
|
30
|
+
*/
|
|
31
|
+
function panameraWebpackConfig(options = {}) {
|
|
32
|
+
const workspaceRoot = options.workspaceRoot ?? process.cwd();
|
|
33
|
+
const projectRoot = options.projectRoot ?? workspaceRoot;
|
|
34
|
+
const testRunnerEntry = path.resolve(projectRoot, "./test/runner.ts");
|
|
35
|
+
const devServerPort = parse(readFileSync(path.resolve(workspaceRoot, ".vscode/settings.json"), "utf8"))["pixide.dev.devServer"]?.devServerPort;
|
|
36
|
+
assert(devServerPort, "pixide.dev.devServer.devServerPort is required in .vscode/settings.json");
|
|
37
|
+
const devServerHost = getLocalIP()[0];
|
|
38
|
+
assert(devServerHost, "Failed to get local IP");
|
|
39
|
+
const postcssLoaderForRem = {
|
|
40
|
+
loader: __require.resolve("postcss-loader"),
|
|
41
|
+
options: { postcssOptions: { plugins: [postcssPxtorem({
|
|
42
|
+
rootValue: 16,
|
|
43
|
+
propList: ["*"],
|
|
44
|
+
minPixelValue: 0,
|
|
45
|
+
selectorBlackList: [/panameraNoRem/]
|
|
46
|
+
})] } }
|
|
47
|
+
};
|
|
48
|
+
return (_env, argv) => {
|
|
49
|
+
const isShipping = argv.mode === "production";
|
|
50
|
+
return {
|
|
51
|
+
context: projectRoot,
|
|
52
|
+
entry: pages.map((v) => ({ [v.name]: {
|
|
53
|
+
layer: v.name,
|
|
54
|
+
import: isShipping ? v.entry : testRunnerEntry
|
|
55
|
+
} })).reduce((a, b) => Object.assign(a, b)),
|
|
56
|
+
output: {
|
|
57
|
+
path: path.resolve(projectRoot, `./dist/html${isShipping ? "-pro" : "-dev"}`),
|
|
58
|
+
filename: "[name]/[name].js",
|
|
59
|
+
assetModuleFilename: (pathData) => {
|
|
60
|
+
if (pathData.filename?.startsWith("test/mocks/")) return "mocks/media/[name].[hash:8].[ext]";
|
|
61
|
+
return "static/media/[name].[hash:8].[ext]";
|
|
62
|
+
},
|
|
63
|
+
publicPath: isShipping ? "../" : `http://${devServerHost}:${devServerPort}/`,
|
|
64
|
+
clean: true,
|
|
65
|
+
asyncChunks: false,
|
|
66
|
+
chunkFormat: false,
|
|
67
|
+
chunkLoading: false
|
|
68
|
+
},
|
|
69
|
+
externals: { csharp: "esm globalThis.CSharp" },
|
|
70
|
+
resolve: {
|
|
71
|
+
extensions: [
|
|
72
|
+
".js",
|
|
73
|
+
".jsx",
|
|
74
|
+
".ts",
|
|
75
|
+
".tsx"
|
|
76
|
+
],
|
|
77
|
+
alias: {
|
|
78
|
+
"preact$": "@pixui-dev/pxw/lib/preact.js",
|
|
79
|
+
"preact/compat$": "@pixui-dev/pxw/lib/preact.js",
|
|
80
|
+
"preact/hooks$": "@pixui-dev/pxw/lib/preact.js",
|
|
81
|
+
"preact-router$": "@pixui-dev/pxw/lib/preact-router.js",
|
|
82
|
+
"react": "@pixui-dev/pxw/lib/preact.js"
|
|
83
|
+
},
|
|
84
|
+
modules: options.preferProjectNodeModules ? [path.resolve(projectRoot, "node_modules"), "node_modules"] : ["node_modules"]
|
|
85
|
+
},
|
|
86
|
+
plugins: [
|
|
87
|
+
new ForkTsCheckerWebpackPlugin({ async: !isShipping }),
|
|
88
|
+
new MiniCssExtractPlugin({ filename: "[name]/[name].css" }),
|
|
89
|
+
new EnvironmentPlugin({ PROJECT_ROOT: projectRoot }),
|
|
90
|
+
new DefinePlugin({
|
|
91
|
+
"__TEST__": JSON.stringify(false),
|
|
92
|
+
"process.env.PAGE": DefinePlugin.runtimeValue((ctx) => {
|
|
93
|
+
assert(ctx.module.layer);
|
|
94
|
+
return JSON.stringify(ctx.module.layer);
|
|
95
|
+
})
|
|
96
|
+
}),
|
|
97
|
+
...pages.map((page) => {
|
|
98
|
+
return new HtmlWebpackPlugin({
|
|
99
|
+
minify: isShipping,
|
|
100
|
+
chunks: [page.name],
|
|
101
|
+
template: page.template,
|
|
102
|
+
filename: `${page.name}/${page.outputHtml}`
|
|
103
|
+
});
|
|
104
|
+
}),
|
|
105
|
+
!isShipping && testRunnerEntry && new NormalModuleReplacementPlugin(/^virtual:pageEntry$/, (resource) => {
|
|
106
|
+
const page = pages.find((p) => p.name === resource.contextInfo.issuerLayer);
|
|
107
|
+
assert(page);
|
|
108
|
+
const entry = path.resolve(projectRoot, page.entry);
|
|
109
|
+
resource.request = entry;
|
|
110
|
+
resource.createData.request = entry;
|
|
111
|
+
})
|
|
112
|
+
],
|
|
113
|
+
dotenv: { prefix: ["WEBPACK_", "PANAMERA_"] },
|
|
114
|
+
module: { rules: [
|
|
115
|
+
{
|
|
116
|
+
test: /\.[cm]?(js|ts)x?$/,
|
|
117
|
+
use: [{
|
|
118
|
+
loader: __require.resolve("babel-loader"),
|
|
119
|
+
options: {
|
|
120
|
+
assumptions: { noDocumentAll: true },
|
|
121
|
+
presets: [[__require("@babel/preset-typescript"), {
|
|
122
|
+
allowNamespaces: true,
|
|
123
|
+
optimizeConstEnums: true,
|
|
124
|
+
jsxPragma: "h",
|
|
125
|
+
jsxPragmaFrag: "Fragment"
|
|
126
|
+
}], [__require("@babel/preset-react"), {
|
|
127
|
+
pragma: "h",
|
|
128
|
+
pragmaFrag: "Fragment"
|
|
129
|
+
}]],
|
|
130
|
+
plugins: [
|
|
131
|
+
[__require("@babel/plugin-transform-class-properties")],
|
|
132
|
+
[__require("@babel/plugin-transform-logical-assignment-operators")],
|
|
133
|
+
[__require("@babel/plugin-transform-nullish-coalescing-operator")],
|
|
134
|
+
[__require("@babel/plugin-transform-optional-chaining")]
|
|
135
|
+
]
|
|
136
|
+
}
|
|
137
|
+
}]
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
test: /\.(png|jpg|gif|mp4|lottie)$/,
|
|
141
|
+
type: "asset/resource"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
test: /\.css$/,
|
|
145
|
+
use: [
|
|
146
|
+
__require.resolve(MiniCssExtractPlugin.loader),
|
|
147
|
+
__require.resolve("css-loader"),
|
|
148
|
+
postcssLoaderForRem
|
|
149
|
+
]
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
test: /\.less$/,
|
|
153
|
+
use: [
|
|
154
|
+
__require.resolve(MiniCssExtractPlugin.loader),
|
|
155
|
+
{
|
|
156
|
+
loader: __require.resolve("css-loader"),
|
|
157
|
+
options: { modules: {
|
|
158
|
+
namedExport: false,
|
|
159
|
+
exportLocalsConvention: "as-is",
|
|
160
|
+
localIdentName: isShipping ? "[hash:base64]" : "[name]__[local]"
|
|
161
|
+
} }
|
|
162
|
+
},
|
|
163
|
+
postcssLoaderForRem,
|
|
164
|
+
__require.resolve("less-loader")
|
|
165
|
+
]
|
|
166
|
+
}
|
|
167
|
+
] },
|
|
168
|
+
optimization: { minimize: false },
|
|
169
|
+
devtool: "source-map",
|
|
170
|
+
performance: {
|
|
171
|
+
maxEntrypointSize: 800 * 1024,
|
|
172
|
+
maxAssetSize: 800 * 1024
|
|
173
|
+
},
|
|
174
|
+
devServer: {
|
|
175
|
+
host: "0.0.0.0",
|
|
176
|
+
port: devServerPort,
|
|
177
|
+
devMiddleware: { writeToDisk: true },
|
|
178
|
+
client: { overlay: false },
|
|
179
|
+
setupMiddlewares(middlewares) {
|
|
180
|
+
middlewares.unshift(pfbs.getMiddleware());
|
|
181
|
+
return middlewares;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
//#endregion
|
|
188
|
+
export { panameraWebpackConfig };
|
|
189
|
+
|
|
190
|
+
//# sourceMappingURL=webpack.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webpack.mjs","names":["commentJsonParse"],"sources":["../src/webpack.ts"],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "pixui-panamera-configs",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"license": "UNLICENSED",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"build": "tsdown"
|
|
8
|
+
},
|
|
9
|
+
"exports": {
|
|
10
|
+
"./eslint": "./dist/eslint.mjs",
|
|
11
|
+
"./stylelint": "./dist/stylelint.mjs",
|
|
12
|
+
"./webpack": "./dist/webpack.mjs",
|
|
13
|
+
"./package.json": "./package.json",
|
|
14
|
+
"./tsconfig.base.json": "./dist/tsconfig.base.json",
|
|
15
|
+
"./tsconfig.node.json": "./dist/tsconfig.node.json"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist"
|
|
19
|
+
],
|
|
20
|
+
"dependencies": {
|
|
21
|
+
"@babel/core": "^7.29.0",
|
|
22
|
+
"@babel/plugin-transform-class-properties": "^7.28.6",
|
|
23
|
+
"@babel/plugin-transform-logical-assignment-operators": "^7.28.6",
|
|
24
|
+
"@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6",
|
|
25
|
+
"@babel/plugin-transform-optional-chaining": "^7.28.6",
|
|
26
|
+
"@babel/preset-react": "^7.28.5",
|
|
27
|
+
"@babel/preset-typescript": "^7.28.5",
|
|
28
|
+
"@eslint/compat": "^2.0.5",
|
|
29
|
+
"@eslint/js": "^9.39.4",
|
|
30
|
+
"@pixui-dev/pxw": "0.1.38",
|
|
31
|
+
"@stylistic/eslint-plugin": "^5.10.0",
|
|
32
|
+
"@stylistic/stylelint-config": "^5.0.0",
|
|
33
|
+
"babel-loader": "^10.1.1",
|
|
34
|
+
"comment-json": "^5.0.0",
|
|
35
|
+
"css-loader": "^7.1.4",
|
|
36
|
+
"eslint": "^9.39.4",
|
|
37
|
+
"eslint-config-ts-parser-service": "^1.0.1",
|
|
38
|
+
"eslint-plugin-import": "^2.32.0",
|
|
39
|
+
"eslint-plugin-react": "^7.37.5",
|
|
40
|
+
"fork-ts-checker-webpack-plugin": "^9.1.0",
|
|
41
|
+
"html-webpack-plugin": "^5.6.6",
|
|
42
|
+
"less": "^4.6.4",
|
|
43
|
+
"less-loader": "^12.3.2",
|
|
44
|
+
"mini-css-extract-plugin": "^2.10.2",
|
|
45
|
+
"postcss": "^8.5.10",
|
|
46
|
+
"postcss-loader": "^8.2.1",
|
|
47
|
+
"postcss-pxtorem": "^6.1.0",
|
|
48
|
+
"stylelint": "^17.8.0",
|
|
49
|
+
"stylelint-config-standard": "^40.0.0",
|
|
50
|
+
"stylelint-config-standard-less": "^4.1.0",
|
|
51
|
+
"stylelint-config-standard-scss": "^17.0.0",
|
|
52
|
+
"typescript": "^5.9.3",
|
|
53
|
+
"typescript-eslint": "^8.58.2",
|
|
54
|
+
"webpack": "^5.106.2",
|
|
55
|
+
"webpack-dev-server": "^5.2.3"
|
|
56
|
+
},
|
|
57
|
+
"devDependencies": {
|
|
58
|
+
"@types/node": "^20.19.39",
|
|
59
|
+
"@types/postcss-pxtorem": "^6.1.0",
|
|
60
|
+
"tsdown": "^0.21.8"
|
|
61
|
+
},
|
|
62
|
+
"peerDependencies": {
|
|
63
|
+
"eslint": "^9.39.4",
|
|
64
|
+
"stylelint": "^17.8.0",
|
|
65
|
+
"typescript": "^5.9.3",
|
|
66
|
+
"webpack": "^5.106.2",
|
|
67
|
+
"webpack-dev-server": "^5.2.3"
|
|
68
|
+
}
|
|
69
|
+
}
|