@pinnacle0/webpack-util 0.7.4 → 0.8.0-beta.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/README.md +14 -16
- package/package.json +14 -11
- package/src/ArgsUtil.js +3 -9
- package/src/ArgsUtil.js.map +1 -1
- package/src/Builder.d.ts +2 -2
- package/src/Builder.js +37 -35
- package/src/Builder.js.map +1 -1
- package/src/CodeStyleChecker.d.ts +1 -1
- package/src/CodeStyleChecker.js +13 -19
- package/src/CodeStyleChecker.js.map +1 -1
- package/src/Constant.js +1 -4
- package/src/Constant.js.map +1 -1
- package/src/ProjectStructureChecker.d.ts +1 -1
- package/src/ProjectStructureChecker.js +46 -51
- package/src/ProjectStructureChecker.js.map +1 -1
- package/src/ServerStarter.d.ts +1 -1
- package/src/ServerStarter.js +40 -54
- package/src/ServerStarter.js.map +1 -1
- package/src/SystemProxySettingsUtil.js +7 -14
- package/src/SystemProxySettingsUtil.js.map +1 -1
- package/src/TestRunner.d.ts +1 -1
- package/src/TestRunner.js +9 -16
- package/src/TestRunner.js.map +1 -1
- package/src/WebpackConfigGenerator/ConfigEntryDescriptorsFactory.d.ts +1 -1
- package/src/WebpackConfigGenerator/ConfigEntryDescriptorsFactory.js +12 -19
- package/src/WebpackConfigGenerator/ConfigEntryDescriptorsFactory.js.map +1 -1
- package/src/WebpackConfigGenerator/HTMLWebpackPluginsFactory.d.ts +1 -1
- package/src/WebpackConfigGenerator/HTMLWebpackPluginsFactory.js +3 -7
- package/src/WebpackConfigGenerator/HTMLWebpackPluginsFactory.js.map +1 -1
- package/src/WebpackConfigGenerator/Plugin/css.plugin.js +6 -13
- package/src/WebpackConfigGenerator/Plugin/css.plugin.js.map +1 -1
- package/src/WebpackConfigGenerator/Plugin/html.plugin.d.ts +1 -1
- package/src/WebpackConfigGenerator/Plugin/html.plugin.js +7 -14
- package/src/WebpackConfigGenerator/Plugin/html.plugin.js.map +1 -1
- package/src/WebpackConfigGenerator/Plugin/index.d.ts +5 -5
- package/src/WebpackConfigGenerator/Plugin/index.js +21 -25
- package/src/WebpackConfigGenerator/Plugin/index.js.map +1 -1
- package/src/WebpackConfigGenerator/Plugin/script-tag-crossorigin-plugin.js +4 -12
- package/src/WebpackConfigGenerator/Plugin/script-tag-crossorigin-plugin.js.map +1 -1
- package/src/WebpackConfigGenerator/Plugin/ts.plugin.js +7 -14
- package/src/WebpackConfigGenerator/Plugin/ts.plugin.js.map +1 -1
- package/src/WebpackConfigGenerator/Plugin/type-checker.plugin.js +4 -7
- package/src/WebpackConfigGenerator/Plugin/type-checker.plugin.js.map +1 -1
- package/src/WebpackConfigGenerator/Plugin/webpack.plugin.js +6 -10
- package/src/WebpackConfigGenerator/Plugin/webpack.plugin.js.map +1 -1
- package/src/WebpackConfigGenerator/Rule/RegExpUtil.js +1 -5
- package/src/WebpackConfigGenerator/Rule/RegExpUtil.js.map +1 -1
- package/src/WebpackConfigGenerator/Rule/image.rule.js +3 -6
- package/src/WebpackConfigGenerator/Rule/image.rule.js.map +1 -1
- package/src/WebpackConfigGenerator/Rule/index.d.ts +4 -4
- package/src/WebpackConfigGenerator/Rule/index.js +9 -13
- package/src/WebpackConfigGenerator/Rule/index.js.map +1 -1
- package/src/WebpackConfigGenerator/Rule/other.rule.js +4 -7
- package/src/WebpackConfigGenerator/Rule/other.rule.js.map +1 -1
- package/src/WebpackConfigGenerator/Rule/stylesheet.rule.js +15 -11
- package/src/WebpackConfigGenerator/Rule/stylesheet.rule.js.map +1 -1
- package/src/WebpackConfigGenerator/Rule/ts.rule.js +6 -7
- package/src/WebpackConfigGenerator/Rule/ts.rule.js.map +1 -1
- package/src/WebpackConfigGenerator/WebpackConfigSerializationUtil.js +39 -57
- package/src/WebpackConfigGenerator/WebpackConfigSerializationUtil.js.map +1 -1
- package/src/WebpackConfigGenerator/WebpackEntryFactory.d.ts +1 -1
- package/src/WebpackConfigGenerator/WebpackEntryFactory.js +1 -5
- package/src/WebpackConfigGenerator/WebpackEntryFactory.js.map +1 -1
- package/src/WebpackConfigGenerator/WebpackOutputPublicURLFactory.js +1 -5
- package/src/WebpackConfigGenerator/WebpackOutputPublicURLFactory.js.map +1 -1
- package/src/WebpackConfigGenerator/WebpackResolveAliasFactory.d.ts +1 -1
- package/src/WebpackConfigGenerator/WebpackResolveAliasFactory.js +1 -5
- package/src/WebpackConfigGenerator/WebpackResolveAliasFactory.js.map +1 -1
- package/src/WebpackConfigGenerator/WebpackResolveExtensionsFactory.js +4 -8
- package/src/WebpackConfigGenerator/WebpackResolveExtensionsFactory.js.map +1 -1
- package/src/WebpackConfigGenerator/WebpackResolveModulesFactory.js +1 -5
- package/src/WebpackConfigGenerator/WebpackResolveModulesFactory.js.map +1 -1
- package/src/WebpackConfigGenerator/index.d.ts +1 -1
- package/src/WebpackConfigGenerator/index.js +79 -62
- package/src/WebpackConfigGenerator/index.js.map +1 -1
- package/src/index.d.ts +2 -2
- package/src/index.js +8 -8
- package/src/index.js.map +1 -1
- package/src/type.js +1 -2
package/README.md
CHANGED
|
@@ -9,40 +9,38 @@ we provide two all-in-one tools for webpack development and build.
|
|
|
9
9
|
|
|
10
10
|
```ts
|
|
11
11
|
new WebpackServerStarter({
|
|
12
|
-
projectDirectory: path.join(
|
|
12
|
+
projectDirectory: path.join(import.meta.dirname, ".."),
|
|
13
13
|
port: 1234,
|
|
14
14
|
}).run();
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
-
|
|
18
|
-
-
|
|
17
|
+
- Creates a `webpack` compiler instance (development mode) and runs it with `webpack-dev-server`.
|
|
18
|
+
- Starts a `localhost` https server in `1234` port.
|
|
19
19
|
|
|
20
20
|
## `WebpackBuilder`
|
|
21
21
|
|
|
22
22
|
```ts
|
|
23
23
|
new WebpackBuilder({
|
|
24
|
-
projectDirectory: path.join(
|
|
24
|
+
projectDirectory: path.join(import.meta.dirname, ".."),
|
|
25
25
|
}).run();
|
|
26
26
|
```
|
|
27
27
|
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
28
|
+
- Checks if the project structure complies to convention described below.
|
|
29
|
+
- Checks if source files complies with project `prettier` / `stylelint` / `eslint` rules.
|
|
30
|
+
- Run test if supported by `package.json` scripts.
|
|
31
|
+
- Creates a `webpack` compiler instance (production mode) and bundle into an `index.html` with related CSS/JS/images etc.
|
|
32
32
|
|
|
33
33
|
## Project Tech Stack Requirement
|
|
34
34
|
|
|
35
|
+
- TypeScript/JavaScript
|
|
35
36
|
|
|
37
|
+
- CSS/LESS
|
|
36
38
|
|
|
37
|
-
-
|
|
39
|
+
- eslint
|
|
38
40
|
|
|
39
|
-
-
|
|
41
|
+
- stylelint
|
|
40
42
|
|
|
41
|
-
-
|
|
42
|
-
|
|
43
|
-
- stylelint
|
|
44
|
-
|
|
45
|
-
- prettier
|
|
43
|
+
- prettier
|
|
46
44
|
|
|
47
45
|
Note: CSS/LESS only website also supported, without any JavaScript.
|
|
48
46
|
|
|
@@ -116,5 +114,5 @@ The following structure can be used for a npm/yarn/pnpm workspace setup.
|
|
|
116
114
|
├── .eslintrc.js
|
|
117
115
|
├── prettier.config.js
|
|
118
116
|
├── stylelint.config.js
|
|
119
|
-
└── package.json
|
|
117
|
+
└── package.json
|
|
120
118
|
```
|
package/package.json
CHANGED
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pinnacle0/webpack-util",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0-beta.2",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"
|
|
5
|
+
"type": "module",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": {
|
|
8
|
+
"import": "./src/index.js",
|
|
9
|
+
"types": "./src/index.d.ts"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
6
12
|
"dependencies": {
|
|
7
|
-
"@rspack/cli": "1.1.
|
|
8
|
-
"@rspack/core": "1.1.
|
|
13
|
+
"@rspack/cli": "1.1.5",
|
|
14
|
+
"@rspack/core": "1.1.5",
|
|
9
15
|
"@rspack/dev-server": "1.0.9",
|
|
10
16
|
"@rspack/plugin-react-refresh": "1.0.0",
|
|
11
17
|
"@swc/core": "1.4.4",
|
|
@@ -22,25 +28,22 @@
|
|
|
22
28
|
"yargs": "17.7.2"
|
|
23
29
|
},
|
|
24
30
|
"devDependencies": {
|
|
25
|
-
"@pinnacle0/devtool-util": "1.2.30",
|
|
26
31
|
"@types/express": "4.17.21",
|
|
27
32
|
"@types/html-webpack-plugin": "3.2.9",
|
|
28
|
-
"@types/yargs": "17.0.32"
|
|
33
|
+
"@types/yargs": "17.0.32",
|
|
34
|
+
"@pinnacle0/devtool-util": "1.3.0-beta.2"
|
|
29
35
|
},
|
|
30
36
|
"engines": {
|
|
31
37
|
"node": ">=20"
|
|
32
38
|
},
|
|
33
|
-
"jest": {
|
|
34
|
-
"preset": "ts-jest"
|
|
35
|
-
},
|
|
36
39
|
"publishConfig": {
|
|
37
40
|
"directory": "build",
|
|
38
41
|
"linkDirectory": false
|
|
39
42
|
},
|
|
40
43
|
"scripts": {
|
|
41
|
-
"run-script": "
|
|
44
|
+
"run-script": "tsx",
|
|
42
45
|
"build": "pnpm run run-script script/build.ts",
|
|
43
46
|
"format": "pnpm run run-script script/format.ts",
|
|
44
|
-
"test": "
|
|
47
|
+
"test": "vitest --config config/vitest.config.ts --run"
|
|
45
48
|
}
|
|
46
49
|
}
|
package/src/ArgsUtil.js
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.ArgsUtil = void 0;
|
|
7
|
-
const yargs_1 = __importDefault(require("yargs"));
|
|
8
|
-
const args = yargs_1.default.parseSync();
|
|
1
|
+
import yargs from "yargs";
|
|
2
|
+
const args = yargs().parseSync();
|
|
9
3
|
function currentEnv() {
|
|
10
4
|
return args.env || null;
|
|
11
5
|
}
|
|
@@ -18,7 +12,7 @@ function isFastMode() {
|
|
|
18
12
|
function verbose() {
|
|
19
13
|
return Boolean(args.verbose);
|
|
20
14
|
}
|
|
21
|
-
|
|
15
|
+
export const ArgsUtil = Object.freeze({
|
|
22
16
|
currentEnv,
|
|
23
17
|
profilingEnabled,
|
|
24
18
|
isFastMode,
|
package/src/ArgsUtil.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArgsUtil.js","sourceRoot":"","sources":["../../src/ArgsUtil.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ArgsUtil.js","sourceRoot":"","sources":["../../src/ArgsUtil.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,IAAI,GAAG,KAAK,EAAE,CAAC,SAAS,EAAE,CAAC;AAEjC,SAAS,UAAU;IACf,OAAQ,IAAI,CAAC,GAAc,IAAI,IAAI,CAAC;AACxC,CAAC;AAED,SAAS,gBAAgB;IACrB,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,UAAU;IACf,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;AAChC,CAAC;AAED,SAAS,OAAO;IACZ,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;IAClC,UAAU;IACV,gBAAgB;IAChB,UAAU;IACV,OAAO;CACV,CAAC,CAAC"}
|
package/src/Builder.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { WebpackConfigGeneratorOptions } from "./WebpackConfigGenerator";
|
|
2
|
-
import type { InternalCheckerOptions } from "./type";
|
|
1
|
+
import type { WebpackConfigGeneratorOptions } from "./WebpackConfigGenerator/index.js";
|
|
2
|
+
import type { InternalCheckerOptions } from "./type.js";
|
|
3
3
|
export interface WebpackBuilderOptions extends WebpackConfigGeneratorOptions, Omit<InternalCheckerOptions, "tsconfigFilePath"> {
|
|
4
4
|
}
|
|
5
5
|
/**
|
package/src/Builder.js
CHANGED
|
@@ -1,18 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const core_1 = require("@rspack/core");
|
|
11
|
-
const ArgsUtil_1 = require("./ArgsUtil");
|
|
12
|
-
const WebpackConfigGenerator_1 = require("./WebpackConfigGenerator");
|
|
13
|
-
const ProjectStructureChecker_1 = require("./ProjectStructureChecker");
|
|
14
|
-
const TestRunner_1 = require("./TestRunner");
|
|
15
|
-
const CodeStyleChecker_1 = require("./CodeStyleChecker");
|
|
1
|
+
import { Utility } from "@pinnacle0/devtool-util/Utility";
|
|
2
|
+
import fs from "fs";
|
|
3
|
+
import path from "path";
|
|
4
|
+
import { rspack } from "@rspack/core";
|
|
5
|
+
import { ArgsUtil } from "./ArgsUtil.js";
|
|
6
|
+
import { WebpackConfigGenerator } from "./WebpackConfigGenerator/index.js";
|
|
7
|
+
import { ProjectStructureChecker } from "./ProjectStructureChecker.js";
|
|
8
|
+
import { TestRunner } from "./TestRunner.js";
|
|
9
|
+
import { CodeStyleChecker } from "./CodeStyleChecker.js";
|
|
16
10
|
/**
|
|
17
11
|
* Build the website by webpack.
|
|
18
12
|
*
|
|
@@ -27,34 +21,43 @@ const CodeStyleChecker_1 = require("./CodeStyleChecker");
|
|
|
27
21
|
*
|
|
28
22
|
* Add "--mode fast" to command line, if you want to skip style and lint checks.
|
|
29
23
|
*/
|
|
30
|
-
class Builder {
|
|
24
|
+
export class Builder {
|
|
25
|
+
projectDirectory;
|
|
26
|
+
extraCheckDirectories;
|
|
27
|
+
projectStaticDirectory;
|
|
28
|
+
projectProfilingJSONOutputPath;
|
|
29
|
+
outputDirectory;
|
|
30
|
+
webpackConfig;
|
|
31
|
+
tsconfigFilePath;
|
|
32
|
+
isFastMode;
|
|
33
|
+
enableProfiling;
|
|
34
|
+
onSuccess;
|
|
35
|
+
logger = Utility.createConsoleLogger("WebpackBuilder");
|
|
31
36
|
constructor(options) {
|
|
32
|
-
var _a, _b;
|
|
33
|
-
this.logger = Utility_1.Utility.createConsoleLogger("WebpackBuilder");
|
|
34
37
|
this.projectDirectory = options.projectDirectory;
|
|
35
|
-
this.extraCheckDirectories =
|
|
36
|
-
this.projectStaticDirectory =
|
|
37
|
-
this.projectProfilingJSONOutputPath =
|
|
38
|
-
this.outputDirectory =
|
|
39
|
-
this.tsconfigFilePath = options.tsconfigFilePath ? options.tsconfigFilePath :
|
|
40
|
-
this.isFastMode =
|
|
41
|
-
this.enableProfiling =
|
|
38
|
+
this.extraCheckDirectories = options.extraCheckDirectories ?? [];
|
|
39
|
+
this.projectStaticDirectory = path.join(this.projectDirectory, "static");
|
|
40
|
+
this.projectProfilingJSONOutputPath = path.join(this.projectDirectory, "profile.json");
|
|
41
|
+
this.outputDirectory = path.join(this.projectDirectory, "build/dist");
|
|
42
|
+
this.tsconfigFilePath = options.tsconfigFilePath ? options.tsconfigFilePath : path.join(options.projectDirectory, options.tsconfigFilename ?? "tsconfig.json");
|
|
43
|
+
this.isFastMode = ArgsUtil.isFastMode();
|
|
44
|
+
this.enableProfiling = ArgsUtil.profilingEnabled();
|
|
42
45
|
this.onSuccess = options.onSuccess;
|
|
43
|
-
this.webpackConfig = new
|
|
46
|
+
this.webpackConfig = new WebpackConfigGenerator(options).production(this.outputDirectory);
|
|
44
47
|
}
|
|
45
48
|
run() {
|
|
46
49
|
if (!this.isFastMode) {
|
|
47
|
-
new
|
|
50
|
+
new ProjectStructureChecker({
|
|
48
51
|
projectDirectory: this.projectDirectory,
|
|
49
52
|
extraCheckDirectories: this.extraCheckDirectories,
|
|
50
53
|
tsconfigFilePath: this.tsconfigFilePath,
|
|
51
54
|
}).run();
|
|
52
|
-
new
|
|
55
|
+
new TestRunner({
|
|
53
56
|
projectDirectory: this.projectDirectory,
|
|
54
57
|
extraCheckDirectories: this.extraCheckDirectories,
|
|
55
58
|
tsconfigFilePath: this.tsconfigFilePath,
|
|
56
59
|
}).run();
|
|
57
|
-
new
|
|
60
|
+
new CodeStyleChecker({
|
|
58
61
|
projectDirectory: this.projectDirectory,
|
|
59
62
|
extraCheckDirectories: this.extraCheckDirectories,
|
|
60
63
|
tsconfigFilePath: this.tsconfigFilePath,
|
|
@@ -66,17 +69,17 @@ class Builder {
|
|
|
66
69
|
}
|
|
67
70
|
cleanDistFolder() {
|
|
68
71
|
this.logger.task("Cleaning build dist folder");
|
|
69
|
-
|
|
72
|
+
fs.existsSync(this.outputDirectory) && fs.readdirSync(this.outputDirectory).forEach(file => fs.rmSync(path.join(this.outputDirectory, file), { recursive: true }));
|
|
70
73
|
}
|
|
71
74
|
copyStatic() {
|
|
72
75
|
this.logger.task("Copying static assets to build dist folder");
|
|
73
|
-
if (
|
|
74
|
-
|
|
76
|
+
if (fs.existsSync(this.projectStaticDirectory)) {
|
|
77
|
+
fs.cpSync(this.projectStaticDirectory, this.outputDirectory, { dereference: true, recursive: true });
|
|
75
78
|
}
|
|
76
79
|
}
|
|
77
80
|
bundleByWebpack() {
|
|
78
81
|
this.logger.task("Starting webpack");
|
|
79
|
-
|
|
82
|
+
rspack(this.webpackConfig).run((error, stats) => {
|
|
80
83
|
if (error) {
|
|
81
84
|
throw error;
|
|
82
85
|
}
|
|
@@ -84,7 +87,7 @@ class Builder {
|
|
|
84
87
|
const statsJSON = stats.toJson();
|
|
85
88
|
if (this.enableProfiling) {
|
|
86
89
|
this.logger.task(["Generating profile for analysis", this.projectProfilingJSONOutputPath]);
|
|
87
|
-
|
|
90
|
+
fs.writeFileSync(this.projectProfilingJSONOutputPath, JSON.stringify(statsJSON, null, 2), { encoding: "utf8" });
|
|
88
91
|
}
|
|
89
92
|
if (stats.hasErrors() || stats.hasWarnings()) {
|
|
90
93
|
this.logger.error("Webpack compiled with the following errors/warnings:");
|
|
@@ -124,5 +127,4 @@ class Builder {
|
|
|
124
127
|
return { warnings, errors };
|
|
125
128
|
}
|
|
126
129
|
}
|
|
127
|
-
exports.Builder = Builder;
|
|
128
130
|
//# sourceMappingURL=Builder.js.map
|
package/src/Builder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Builder.js","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Builder.js","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"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"}
|
package/src/CodeStyleChecker.js
CHANGED
|
@@ -1,20 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const Utility_1 = require("@pinnacle0/devtool-util/lib/Utility");
|
|
9
|
-
const fs_1 = __importDefault(require("fs"));
|
|
10
|
-
const path_1 = __importDefault(require("path"));
|
|
11
|
-
class CodeStyleChecker {
|
|
1
|
+
import { PrettierUtil } from "@pinnacle0/devtool-util/PrettierUtil";
|
|
2
|
+
import { Utility } from "@pinnacle0/devtool-util/Utility";
|
|
3
|
+
import fs from "fs";
|
|
4
|
+
import path from "path";
|
|
5
|
+
export class CodeStyleChecker {
|
|
6
|
+
checkableSrcDirectories;
|
|
7
|
+
logger = Utility.createConsoleLogger("CodeStyleChecker");
|
|
12
8
|
constructor({ projectDirectory, extraCheckDirectories = [] }) {
|
|
13
|
-
this.
|
|
14
|
-
this.checkableSrcDirectories = [path_1.default.join(projectDirectory, "src")];
|
|
9
|
+
this.checkableSrcDirectories = [path.join(projectDirectory, "src")];
|
|
15
10
|
for (const directory of extraCheckDirectories) {
|
|
16
|
-
const others = ["test", "script"].map(folder =>
|
|
17
|
-
this.checkableSrcDirectories.push(
|
|
11
|
+
const others = ["test", "script"].map(folder => path.join(directory, folder)).filter(path => fs.existsSync(path));
|
|
12
|
+
this.checkableSrcDirectories.push(path.join(directory, "src"), ...others);
|
|
18
13
|
}
|
|
19
14
|
}
|
|
20
15
|
run() {
|
|
@@ -25,21 +20,20 @@ class CodeStyleChecker {
|
|
|
25
20
|
checkPrettier() {
|
|
26
21
|
this.logger.task("Checking Prettier");
|
|
27
22
|
for (const srcDirectory of this.checkableSrcDirectories) {
|
|
28
|
-
|
|
23
|
+
PrettierUtil.check(srcDirectory);
|
|
29
24
|
}
|
|
30
25
|
}
|
|
31
26
|
checkESLint() {
|
|
32
27
|
this.logger.task("Checking ESLint");
|
|
33
28
|
for (const srcDirectory of this.checkableSrcDirectories) {
|
|
34
|
-
|
|
29
|
+
Utility.runCommand("eslint", ["--no-warn-ignored", "--no-error-on-unmatched-pattern", "--max-warnings=1", `"${srcDirectory}/**"`]);
|
|
35
30
|
}
|
|
36
31
|
}
|
|
37
32
|
checkStylelint() {
|
|
38
33
|
this.logger.task("Checking Stylelint");
|
|
39
34
|
for (const srcDirectory of this.checkableSrcDirectories) {
|
|
40
|
-
|
|
35
|
+
Utility.runCommand("stylelint", ["--allow-empty-input", "--max-warnings=1", path.join(srcDirectory, "**/*.{css,less}")]);
|
|
41
36
|
}
|
|
42
37
|
}
|
|
43
38
|
}
|
|
44
|
-
exports.CodeStyleChecker = CodeStyleChecker;
|
|
45
39
|
//# sourceMappingURL=CodeStyleChecker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeStyleChecker.js","sourceRoot":"","sources":["../../src/CodeStyleChecker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CodeStyleChecker.js","sourceRoot":"","sources":["../../src/CodeStyleChecker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,sCAAsC,CAAC;AAClE,OAAO,EAAC,OAAO,EAAC,MAAM,iCAAiC,CAAC;AACxD,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,MAAM,OAAO,gBAAgB;IACR,uBAAuB,CAAwB;IAC/C,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;IAE1E,YAAY,EAAC,gBAAgB,EAAE,qBAAqB,GAAG,EAAE,EAAyB;QAC9E,IAAI,CAAC,uBAAuB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAAC;QACpE,KAAK,MAAM,SAAS,IAAI,qBAAqB,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YAClH,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;QAC9E,CAAC;IACL,CAAC;IAED,GAAG;QACC,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,cAAc,EAAE,CAAC;IAC1B,CAAC;IAEO,aAAa;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACtC,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACtD,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACrC,CAAC;IACL,CAAC;IAEO,WAAW;QACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACpC,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACtD,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,mBAAmB,EAAE,iCAAiC,EAAE,kBAAkB,EAAE,IAAI,YAAY,MAAM,CAAC,CAAC,CAAC;QACvI,CAAC;IACL,CAAC;IAEO,cAAc;QAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACvC,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACtD,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,qBAAqB,EAAE,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;QAC7H,CAAC;IACL,CAAC;CACJ"}
|
package/src/Constant.js
CHANGED
package/src/Constant.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Constant.js","sourceRoot":"","sources":["../../src/Constant.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Constant.js","sourceRoot":"","sources":["../../src/Constant.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;IAClC,qBAAqB,EAAE,IAAI;IAC3B,gBAAgB,EAAE,IAAI;IACtB;;OAEG;IACH,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;IAClE;;OAEG;IACH,cAAc,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAC3D;;OAEG;IACH,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IACjE;;;OAGG;IACH,kBAAkB,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,CAAC;CACpG,CAAC,CAAC"}
|
|
@@ -1,18 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const Constant_1 = require("./Constant");
|
|
10
|
-
class ProjectStructureChecker {
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { Constant } from "./Constant.js";
|
|
4
|
+
export class ProjectStructureChecker {
|
|
5
|
+
projectDirectory;
|
|
6
|
+
extraCheckDirectories;
|
|
7
|
+
packageJSONPath;
|
|
8
|
+
tsConfigFilePath;
|
|
11
9
|
constructor(options) {
|
|
12
|
-
var _a;
|
|
13
10
|
this.projectDirectory = options.projectDirectory;
|
|
14
|
-
this.extraCheckDirectories =
|
|
15
|
-
this.packageJSONPath =
|
|
11
|
+
this.extraCheckDirectories = options.extraCheckDirectories ?? [];
|
|
12
|
+
this.packageJSONPath = path.join(options.projectDirectory, "package.json");
|
|
16
13
|
this.tsConfigFilePath = options.tsconfigFilePath;
|
|
17
14
|
}
|
|
18
15
|
run() {
|
|
@@ -26,93 +23,91 @@ class ProjectStructureChecker {
|
|
|
26
23
|
this.checkStyleLintInstallation();
|
|
27
24
|
}
|
|
28
25
|
checkMainProjectDirectory() {
|
|
29
|
-
if (!
|
|
26
|
+
if (!fs.existsSync(this.projectDirectory) || !fs.statSync(this.projectDirectory).isDirectory()) {
|
|
30
27
|
throw new Error(`Cannot check project directory at "${this.projectDirectory}" because it is not a folder.`);
|
|
31
28
|
}
|
|
32
|
-
const mainProjectStaticDirectory =
|
|
33
|
-
if (
|
|
29
|
+
const mainProjectStaticDirectory = path.join(this.projectDirectory, "static");
|
|
30
|
+
if (fs.existsSync(mainProjectStaticDirectory) && !fs.statSync(mainProjectStaticDirectory).isDirectory()) {
|
|
34
31
|
throw new Error(`Directory /static must be a folder.`);
|
|
35
32
|
}
|
|
36
33
|
}
|
|
37
34
|
checkMainProjectSrcDirectory() {
|
|
38
|
-
const mainProjectSrcDirectory =
|
|
39
|
-
if (!(
|
|
35
|
+
const mainProjectSrcDirectory = path.join(this.projectDirectory, "src");
|
|
36
|
+
if (!(fs.existsSync(mainProjectSrcDirectory) && fs.statSync(mainProjectSrcDirectory).isDirectory())) {
|
|
40
37
|
throw new Error(`Cannot find /src folder inside directory at "${this.projectDirectory}".`);
|
|
41
38
|
}
|
|
42
39
|
let isMainEntryFound = false;
|
|
43
|
-
|
|
44
|
-
.map(entryName =>
|
|
40
|
+
Constant.mainEntryFilenames
|
|
41
|
+
.map(entryName => path.join(mainProjectSrcDirectory, entryName))
|
|
45
42
|
.forEach(entryPath => {
|
|
46
|
-
if (
|
|
43
|
+
if (fs.existsSync(entryPath) && fs.statSync(entryPath).isFile()) {
|
|
47
44
|
isMainEntryFound = true;
|
|
48
45
|
}
|
|
49
46
|
});
|
|
50
47
|
if (!isMainEntryFound) {
|
|
51
|
-
throw new Error(`Cannot find main entry file in /src at "${mainProjectSrcDirectory}"; checked: ${
|
|
48
|
+
throw new Error(`Cannot find main entry file in /src at "${mainProjectSrcDirectory}"; checked: ${Constant.mainEntryFilenames.map(_ => `"${_}"`).join(" / ")}.`);
|
|
52
49
|
}
|
|
53
50
|
}
|
|
54
51
|
checkExtraDirectories() {
|
|
55
52
|
for (const extraCheckDirectory of this.extraCheckDirectories) {
|
|
56
|
-
if (!(
|
|
53
|
+
if (!(fs.existsSync(extraCheckDirectory) && fs.statSync(extraCheckDirectory).isDirectory())) {
|
|
57
54
|
throw new Error(`Cannot check extra directory at "${extraCheckDirectory}" because it is not a folder.`);
|
|
58
55
|
}
|
|
59
56
|
}
|
|
60
57
|
}
|
|
58
|
+
// TODO/David: revert
|
|
61
59
|
checkPackageJSON() {
|
|
62
|
-
const startWithDigit = /^\d/;
|
|
63
|
-
const startWithWorkSpace = /^workspace:/;
|
|
64
|
-
if (!(
|
|
60
|
+
// const startWithDigit = /^\d/;
|
|
61
|
+
// const startWithWorkSpace = /^workspace:/;
|
|
62
|
+
if (!(fs.existsSync(this.packageJSONPath) && fs.statSync(this.packageJSONPath).isFile())) {
|
|
65
63
|
throw new Error(`Cannot find package.json at "${this.packageJSONPath}".`);
|
|
66
64
|
}
|
|
67
|
-
const packageJSONContents = JSON.parse(
|
|
68
|
-
for (const [depName, depVersion] of Object.entries(packageJSONContents.dependencies || {})) {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
}
|
|
81
|
-
}
|
|
65
|
+
// const packageJSONContents: Record<string, any> = JSON.parse(fs.readFileSync(this.packageJSONPath, {encoding: "utf8"}));
|
|
66
|
+
// for (const [depName, depVersion] of Object.entries<string>(packageJSONContents.dependencies || {})) {
|
|
67
|
+
// if (startWithWorkSpace.test(depVersion)) continue;
|
|
68
|
+
// if (!startWithDigit.test(depVersion)) {
|
|
69
|
+
// throw new Error(`Dependency "${depName}" must be an exact version, but found "${depVersion}" in package.json at "${this.packageJSONPath}".`);
|
|
70
|
+
// }
|
|
71
|
+
// }
|
|
72
|
+
// for (const [depName, depVersion] of Object.entries<string>(packageJSONContents.devDependencies || {})) {
|
|
73
|
+
// if (startWithWorkSpace.test(depVersion)) continue;
|
|
74
|
+
// if (!startWithDigit.test(depVersion)) {
|
|
75
|
+
// throw new Error(`Dependency "${depName}" must be an exact version, but found "${depVersion}" in package.json at "${this.packageJSONPath}".`);
|
|
76
|
+
// }
|
|
77
|
+
// }
|
|
82
78
|
}
|
|
83
79
|
checkTSConfig() {
|
|
84
|
-
const mainProjectSrcDirectory =
|
|
80
|
+
const mainProjectSrcDirectory = path.join(this.projectDirectory, "src");
|
|
85
81
|
// Checking the first-level of src/* is enough here
|
|
86
|
-
const hasTSFiles =
|
|
87
|
-
const hasTSConfigFile =
|
|
82
|
+
const hasTSFiles = fs.readdirSync(mainProjectSrcDirectory).some(fileName => fileName.endsWith(".ts") || fileName.endsWith(".tsx"));
|
|
83
|
+
const hasTSConfigFile = fs.existsSync(this.tsConfigFilePath) && fs.statSync(this.tsConfigFilePath).isFile();
|
|
88
84
|
if (hasTSFiles && !hasTSConfigFile) {
|
|
89
85
|
throw new Error(`Cannot find tsconfig.json: "${this.tsConfigFilePath}".`);
|
|
90
86
|
}
|
|
91
87
|
}
|
|
92
88
|
checkPrettierInstallation() {
|
|
93
89
|
try {
|
|
94
|
-
|
|
90
|
+
import("prettier");
|
|
95
91
|
}
|
|
96
|
-
catch
|
|
92
|
+
catch {
|
|
97
93
|
throw new Error(`Cannot load prettier module (requiring from "webpack-util"), make sure prettier is installed.`);
|
|
98
94
|
}
|
|
99
95
|
}
|
|
100
96
|
checkESLintInstallation() {
|
|
101
97
|
try {
|
|
102
|
-
|
|
98
|
+
import("eslint");
|
|
103
99
|
}
|
|
104
|
-
catch
|
|
100
|
+
catch {
|
|
105
101
|
throw new Error(`Cannot load eslint module (requiring from "webpack-util"), make sure eslint is installed.`);
|
|
106
102
|
}
|
|
107
103
|
}
|
|
108
104
|
checkStyleLintInstallation() {
|
|
109
105
|
try {
|
|
110
|
-
|
|
106
|
+
import("stylelint");
|
|
111
107
|
}
|
|
112
|
-
catch
|
|
108
|
+
catch {
|
|
113
109
|
throw new Error(`Cannot load stylelint module (requiring from "webpack-util"), make sure stylelint is installed.`);
|
|
114
110
|
}
|
|
115
111
|
}
|
|
116
112
|
}
|
|
117
|
-
exports.ProjectStructureChecker = ProjectStructureChecker;
|
|
118
113
|
//# sourceMappingURL=ProjectStructureChecker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectStructureChecker.js","sourceRoot":"","sources":["../../src/ProjectStructureChecker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProjectStructureChecker.js","sourceRoot":"","sources":["../../src/ProjectStructureChecker.ts"],"names":[],"mappings":"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"}
|
package/src/ServerStarter.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Application } from "express";
|
|
2
|
-
import type { WebpackConfigGeneratorOptions } from "./type";
|
|
2
|
+
import type { WebpackConfigGeneratorOptions } from "./type.js";
|
|
3
3
|
export interface WebpackServerStarterOptions extends Pick<WebpackConfigGeneratorOptions, "projectDirectory" | "dynamicPathResolvers" | "extraEntries" | "prioritizedExtensionPrefixes" | "defineVars" | "extraExtensionsForOtherRule" | "tsconfigFilePath" | "tsconfigFilename" | "customizedLoaders" | "customizedPlugins" | "indirectCodeExclude"> {
|
|
4
4
|
port: number;
|
|
5
5
|
apiProxy?: {
|