@ywal123456/jskim 0.2.0 → 0.3.0
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 +112 -162
- package/docs/configuration.md +204 -207
- package/docs/create-jskim.md +22 -7
- package/package.json +1 -1
- package/scripts/lib/build-project.js +18 -12
- package/scripts/lib/create-nunjucks-env.js +39 -1
- package/scripts/lib/merge-config.js +87 -2
- package/scripts/lib/process-files.js +263 -0
- package/scripts/lib/render-pages.js +17 -1
- package/scripts/lib/resolve-project.js +152 -28
- package/scripts/lib/resolve-watch-paths.js +31 -13
|
@@ -5,15 +5,25 @@ const path = require('node:path');
|
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* 解決済みプロジェクト設定から監視ディレクトリを計算します。
|
|
8
|
-
*
|
|
8
|
+
* files mode: files[].from / templates[]
|
|
9
|
+
* legacy mode: render[].from / templates[] / copy[].from
|
|
9
10
|
* outputDir / dist / node_modules は監視しません。
|
|
10
11
|
*
|
|
11
12
|
* @param {object} project
|
|
12
13
|
* @returns {{ absolutePaths: string[], displayPaths: string[] }}
|
|
13
14
|
*/
|
|
14
15
|
function resolveWatchPaths(project) {
|
|
15
|
-
const {
|
|
16
|
-
|
|
16
|
+
const {
|
|
17
|
+
name,
|
|
18
|
+
sourceDir,
|
|
19
|
+
outputDir,
|
|
20
|
+
workspaceRoot,
|
|
21
|
+
render,
|
|
22
|
+
templates,
|
|
23
|
+
copy,
|
|
24
|
+
files,
|
|
25
|
+
pipelineMode,
|
|
26
|
+
} = project;
|
|
17
27
|
|
|
18
28
|
const absolutePaths = [];
|
|
19
29
|
const seen = new Set();
|
|
@@ -39,9 +49,23 @@ function resolveWatchPaths(project) {
|
|
|
39
49
|
absolutePaths.push(resolved);
|
|
40
50
|
}
|
|
41
51
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
52
|
+
if (pipelineMode === 'files') {
|
|
53
|
+
for (const rule of Array.isArray(files) ? files : []) {
|
|
54
|
+
if (rule && rule.from) {
|
|
55
|
+
addCandidate(path.join(sourceDir, rule.from));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
} else {
|
|
59
|
+
for (const rule of Array.isArray(render) ? render : []) {
|
|
60
|
+
if (rule && rule.from) {
|
|
61
|
+
addCandidate(path.join(sourceDir, rule.from));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
for (const rule of Array.isArray(copy) ? copy : []) {
|
|
66
|
+
if (rule && rule.from) {
|
|
67
|
+
addCandidate(path.join(sourceDir, rule.from));
|
|
68
|
+
}
|
|
45
69
|
}
|
|
46
70
|
}
|
|
47
71
|
|
|
@@ -51,16 +75,10 @@ function resolveWatchPaths(project) {
|
|
|
51
75
|
}
|
|
52
76
|
}
|
|
53
77
|
|
|
54
|
-
for (const rule of Array.isArray(copy) ? copy : []) {
|
|
55
|
-
if (rule && rule.from) {
|
|
56
|
-
addCandidate(path.join(sourceDir, rule.from));
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
78
|
if (absolutePaths.length === 0) {
|
|
61
79
|
throw new Error(
|
|
62
80
|
`[JSKim] プロジェクト "${name}" の監視パスがありません。\n` +
|
|
63
|
-
`原因: render[].from / templates[] / copy[].from のいずれも既存パスに解決できませんでした。\n` +
|
|
81
|
+
`原因: files[].from / render[].from / templates[] / copy[].from のいずれも既存パスに解決できませんでした。\n` +
|
|
64
82
|
`sourceDir: ${sourceDir}`
|
|
65
83
|
);
|
|
66
84
|
}
|