@atomicsmash/cli 7.0.0-beta.9 → 7.0.1-beta.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/dist/commands/blocks.d.ts +23 -2
- package/dist/commands/blocks.d.ts.map +1 -1
- package/dist/commands/blocks.js +309 -183
- package/dist/commands/blocks.js.map +1 -1
- package/dist/external/utils.cjs +232 -0
- package/dist/external/utils.cjs.map +1 -0
- package/dist/external/utils.d.cts +19 -0
- package/dist/external/utils.d.cts.map +1 -0
- package/dist/external/wordpress.webpack.config.cjs +437 -0
- package/dist/external/wordpress.webpack.config.cjs.map +1 -0
- package/dist/external/wordpress.webpack.config.d.cts +6 -0
- package/dist/external/wordpress.webpack.config.d.cts.map +1 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +2 -1
- package/dist/utils.js.map +1 -1
- package/package.json +36 -18
|
@@ -1,3 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import type { BlockMetaData } from "@atomicsmash/blocks-helpers";
|
|
2
|
+
import webpack from "webpack";
|
|
3
|
+
export declare const blocksHelpMessage = "\n Atomic Smash CLI - Blocks command.\n\n A command to generate WordPress blocks from a src folder.\n\n Options:\n --in The directory where the WP blocks can be found. Relative to cwd.\n --out The directory where the WP blocks will be output. Relative to cwd.\n --tsConfigPath (optional) The directory where the tsconfig file can be found. Relative to cwd. Defaults to the in folder.\n --postcssConfigPath (optional) The directory where the postcss config file can be found. Relative to cwd. Defaults to the in folder and then searches up the directory tree.\n --watch (optional) Watch the blocks in folder for changes and compile.\n --excludeBlocks (optional) A comma separated list of the folder names of blocks to exclude from compilation. Defaults to \"__TEMPLATE__\".\n --excludeRootFiles (optional) A comma separated list of the root file names to exclude from compilation. Nothing is excluded by default.\n --alwaysCompileRootFiles (optional) By default, we won't compile root files if no blocks are found, this allows you to override that setting. Defaults to false.\n --watch (optional) Run compiler in watch mode. Default to false.\n\n Example usage:\n $ smash-cli blocks --watch --in src --out build --tsConfigPath tsconfig.json\n";
|
|
4
|
+
export default function blocks(args: string[]): Promise<void>;
|
|
5
|
+
export declare function getRootFileJSEntryPoints({ srcFolder, excludeRootFiles, }: {
|
|
6
|
+
srcFolder: string;
|
|
7
|
+
excludeRootFiles: string[];
|
|
8
|
+
}): Promise<webpack.EntryObject>;
|
|
9
|
+
export declare function getAllBlocksJSEntryPoints({ srcFolder, blocks, }: {
|
|
10
|
+
srcFolder: string;
|
|
11
|
+
blocks: Record<string, {
|
|
12
|
+
blockFolder: string;
|
|
13
|
+
blockJson: BlockJson;
|
|
14
|
+
}>;
|
|
15
|
+
}): webpack.EntryObject;
|
|
16
|
+
type BlockJson = BlockMetaData<never, never>;
|
|
17
|
+
export declare function getBlockJsonFiles(srcFolder: string, excludeBlocks: string[]): Promise<Record<string, {
|
|
18
|
+
blockFolder: string;
|
|
19
|
+
blockJson: BlockJson;
|
|
20
|
+
}>>;
|
|
21
|
+
export declare function getBlockJsonScriptFields(blockJson: BlockJson): Partial<Pick<BlockJson, "viewScript" | "script" | "editorScript">> | null;
|
|
22
|
+
export declare function getBlockJsonStyleFields(blockJson: BlockJson): Partial<Pick<BlockJson, "editorStyle" | "style" | "viewStyle">> | null;
|
|
23
|
+
export {};
|
|
3
24
|
//# sourceMappingURL=blocks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../src/commands/blocks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../src/commands/blocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AA0BjE,OAAO,OAAO,MAAM,SAAS,CAAC;AAM9B,eAAO,MAAM,iBAAiB,u2CAkB7B,CAAC;AAEF,wBAA8B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,iBAyClD;AAuID,wBAAsB,wBAAwB,CAAC,EAC9C,SAAS,EACT,gBAAgB,GAChB,EAAE;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC3B,gCAmCA;AAED,wBAAgB,yBAAyB,CAAC,EACzC,SAAS,EACT,MAAM,GACN,EAAE;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CACb,MAAM,EACN;QACC,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,SAAS,CAAC;KACrB,CACD,CAAC;CACF,uBAkCA;AAED,KAAK,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAE7C,wBAAsB,iBAAiB,CACtC,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EAAE;iBAUqB,MAAM;eAAa,SAAS;IAmBxE;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,SAAS,6EAa5D;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,SAAS,0EAa3D"}
|
package/dist/commands/blocks.js
CHANGED
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
import crypto from "node:crypto";
|
|
2
|
-
import { readFileSync
|
|
3
|
-
import { readdir } from "node:fs/promises";
|
|
4
|
-
import { resolve as resolvePath } from "node:path";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { readdir, readFile, writeFile } from "node:fs/promises";
|
|
4
|
+
import { basename, dirname, extname, join, resolve as resolvePath, sep as pathSeparator, } from "node:path";
|
|
5
5
|
import { pathToFileURL } from "node:url";
|
|
6
|
-
import DependencyExtractionWebpackPlugin from "@wordpress/dependency-extraction-webpack-plugin";
|
|
7
|
-
import defaultConfig from "@wordpress/scripts/config/webpack.config.js";
|
|
8
6
|
import autoprefixer from "autoprefixer";
|
|
9
7
|
import CopyWebpackPlugin from "copy-webpack-plugin";
|
|
10
8
|
import cssnano from "cssnano";
|
|
11
|
-
import { deleteAsync } from "del";
|
|
12
9
|
import glob from "glob-promise";
|
|
13
10
|
import postcss from "postcss";
|
|
14
11
|
import postcssLoadConfig from "postcss-load-config";
|
|
15
12
|
import { compileStringAsync } from "sass";
|
|
16
13
|
import { TsconfigPathsPlugin } from "tsconfig-paths-webpack-plugin";
|
|
14
|
+
import { tsImport } from "tsx/esm/api";
|
|
17
15
|
import webpack from "webpack";
|
|
16
|
+
import defaultConfig from "../external/wordpress.webpack.config.cjs";
|
|
18
17
|
import { hasHelpFlag, interpretFlag, toCamelCase } from "../utils.js";
|
|
19
18
|
const isProduction = process.env.NODE_ENV === "production";
|
|
20
19
|
export const blocksHelpMessage = `
|
|
@@ -31,11 +30,12 @@ export const blocksHelpMessage = `
|
|
|
31
30
|
--excludeBlocks (optional) A comma separated list of the folder names of blocks to exclude from compilation. Defaults to "__TEMPLATE__".
|
|
32
31
|
--excludeRootFiles (optional) A comma separated list of the root file names to exclude from compilation. Nothing is excluded by default.
|
|
33
32
|
--alwaysCompileRootFiles (optional) By default, we won't compile root files if no blocks are found, this allows you to override that setting. Defaults to false.
|
|
33
|
+
--watch (optional) Run compiler in watch mode. Default to false.
|
|
34
34
|
|
|
35
35
|
Example usage:
|
|
36
36
|
$ smash-cli blocks --watch --in src --out build --tsConfigPath tsconfig.json
|
|
37
37
|
`;
|
|
38
|
-
export default function blocks(args) {
|
|
38
|
+
export default async function blocks(args) {
|
|
39
39
|
if (hasHelpFlag(args)) {
|
|
40
40
|
console.log(blocksHelpMessage);
|
|
41
41
|
return;
|
|
@@ -56,134 +56,60 @@ export default function blocks(args) {
|
|
|
56
56
|
.value ?? ["__TEMPLATE__"];
|
|
57
57
|
const excludeRootFiles = interpretFlag(args, "--excludeRootFiles", "list").value ?? [];
|
|
58
58
|
const shouldAlwaysCompileRootFiles = interpretFlag(args, "--alwaysCompileRootFiles", "boolean").value;
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
globOptions: {
|
|
75
|
-
ignore: excludeBlocks.map((blockName) => `${srcFolder}/${blockName}/**/*`),
|
|
76
|
-
},
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
from: `${srcFolder}/**/render.php`,
|
|
80
|
-
noErrorOnMissing: true,
|
|
81
|
-
globOptions: {
|
|
82
|
-
ignore: excludeBlocks.map((blockName) => `${srcFolder}/${blockName}/**/*`),
|
|
83
|
-
},
|
|
84
|
-
},
|
|
85
|
-
],
|
|
86
|
-
}),
|
|
87
|
-
{
|
|
88
|
-
apply: (compiler) => {
|
|
89
|
-
compiler.hooks.afterEmit.tapPromise("Build CSS and copy to test area", async () => {
|
|
90
|
-
await glob
|
|
91
|
-
.promise(`${srcFolder}/**/*.{css,scss}`, {
|
|
92
|
-
ignore: excludeBlocks.map((blockName) => `${srcFolder}/${blockName}/**/*`),
|
|
93
|
-
})
|
|
94
|
-
.then(async (globMatches) => {
|
|
95
|
-
const currentCSSFileNames = [];
|
|
96
|
-
for (const match of globMatches) {
|
|
97
|
-
const fileNameWithExtension = match.split("/").pop();
|
|
98
|
-
if (!fileNameWithExtension) {
|
|
99
|
-
console.error(`Failed to get filename of ${match}`);
|
|
100
|
-
continue;
|
|
101
|
-
}
|
|
102
|
-
let css = readFileSync(match, "utf8");
|
|
103
|
-
if (fileNameWithExtension.split(".").pop() === "scss") {
|
|
104
|
-
css = await compileStringAsync(css, {
|
|
105
|
-
importers: [
|
|
106
|
-
{
|
|
107
|
-
findFileUrl(url) {
|
|
108
|
-
if (!url.startsWith("sitecss:"))
|
|
109
|
-
return null;
|
|
110
|
-
const pathname = url.substring(8);
|
|
111
|
-
return pathToFileURL(`${resolvePath(srcFolder, "../css")}${pathname.startsWith("/") ? pathname : `/${pathname}`}`);
|
|
112
|
-
},
|
|
113
|
-
},
|
|
114
|
-
],
|
|
115
|
-
}).then((result) => result.css);
|
|
116
|
-
}
|
|
117
|
-
let newFileNameWithExtension = fileNameWithExtension;
|
|
118
|
-
let newMatch = match.replace(srcFolder, distFolder);
|
|
119
|
-
if (isProduction) {
|
|
120
|
-
const fileBuffer = readFileSync(match);
|
|
121
|
-
const contentHash = crypto.createHash("shake256", {
|
|
122
|
-
outputLength: 10,
|
|
123
|
-
});
|
|
124
|
-
contentHash.update(fileBuffer);
|
|
125
|
-
newFileNameWithExtension = `${fileNameWithExtension.split(".")[0]}.${contentHash.digest("hex")}.css`;
|
|
126
|
-
newMatch = newMatch.replace(fileNameWithExtension, newFileNameWithExtension);
|
|
127
|
-
currentCSSFileNames.push(`!${newMatch}`);
|
|
128
|
-
}
|
|
129
|
-
const { plugins, options } = await postcssLoadConfig({}, postcssConfigLocation)
|
|
130
|
-
.then(({ plugins, options }) => {
|
|
131
|
-
options.from = match;
|
|
132
|
-
options.to = newMatch;
|
|
133
|
-
return { plugins, options };
|
|
134
|
-
})
|
|
135
|
-
.catch((error) => {
|
|
136
|
-
if (error &&
|
|
137
|
-
error instanceof Error &&
|
|
138
|
-
error.message.startsWith("No PostCSS Config found")) {
|
|
139
|
-
const postCSSPlugins = [autoprefixer];
|
|
140
|
-
if (isProduction) {
|
|
141
|
-
postCSSPlugins.push(cssnano({ preset: "default" }));
|
|
142
|
-
}
|
|
143
|
-
return {
|
|
144
|
-
plugins: postCSSPlugins,
|
|
145
|
-
options: {
|
|
146
|
-
from: match,
|
|
147
|
-
to: newMatch,
|
|
148
|
-
},
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
throw error;
|
|
152
|
-
});
|
|
153
|
-
await postcss(plugins)
|
|
154
|
-
.process(css, options)
|
|
155
|
-
.then((result) => {
|
|
156
|
-
writeFileSync(newMatch, result.css);
|
|
157
|
-
if (result.map) {
|
|
158
|
-
writeFileSync(`${newMatch}.map`, result.map.toString());
|
|
159
|
-
}
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
deleteAsync([
|
|
163
|
-
`${distFolder}/**/*.css`,
|
|
164
|
-
...currentCSSFileNames,
|
|
165
|
-
]).catch((error) => {
|
|
166
|
-
console.log(error);
|
|
167
|
-
});
|
|
168
|
-
})
|
|
169
|
-
.catch((error) => {
|
|
170
|
-
console.error(error);
|
|
171
|
-
throw error;
|
|
172
|
-
});
|
|
173
|
-
});
|
|
174
|
-
},
|
|
175
|
-
},
|
|
176
|
-
];
|
|
59
|
+
const isWatch = interpretFlag(args, "--watch", "boolean").value;
|
|
60
|
+
await runCommand({
|
|
61
|
+
srcFolder,
|
|
62
|
+
distFolder,
|
|
63
|
+
tsConfigLocation,
|
|
64
|
+
postcssConfigLocation,
|
|
65
|
+
excludeBlocks,
|
|
66
|
+
excludeRootFiles,
|
|
67
|
+
shouldAlwaysCompileRootFiles,
|
|
68
|
+
isWatch,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
async function runCommand({ srcFolder, distFolder, tsConfigLocation, postcssConfigLocation, excludeBlocks, excludeRootFiles, shouldAlwaysCompileRootFiles, isWatch, }) {
|
|
72
|
+
const blocks = await getBlockJsonFiles(srcFolder, excludeBlocks);
|
|
73
|
+
const isNoBlocks = Object.keys(blocks).length === 0;
|
|
177
74
|
const compiler = webpack({
|
|
178
75
|
...defaultConfig,
|
|
179
|
-
entry: () =>
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
76
|
+
entry: async () => {
|
|
77
|
+
const entryPoints = {
|
|
78
|
+
...(isNoBlocks && !shouldAlwaysCompileRootFiles
|
|
79
|
+
? {}
|
|
80
|
+
: await getRootFileJSEntryPoints({ srcFolder, excludeRootFiles })),
|
|
81
|
+
...getAllBlocksJSEntryPoints({
|
|
82
|
+
srcFolder,
|
|
83
|
+
blocks,
|
|
84
|
+
}),
|
|
85
|
+
};
|
|
86
|
+
// TODO: improve this console output
|
|
87
|
+
// eslint-disable-next-line no-console
|
|
88
|
+
console.log({ entryPoints });
|
|
89
|
+
return entryPoints;
|
|
90
|
+
},
|
|
185
91
|
context: srcFolder,
|
|
186
|
-
plugins:
|
|
92
|
+
plugins: [
|
|
93
|
+
...(defaultConfig.plugins?.filter((plugin) => {
|
|
94
|
+
return ![
|
|
95
|
+
"CopyPlugin", // CopyWebpackPlugin
|
|
96
|
+
].includes(plugin?.constructor.name ?? "");
|
|
97
|
+
}) ?? []),
|
|
98
|
+
...(isNoBlocks
|
|
99
|
+
? []
|
|
100
|
+
: [
|
|
101
|
+
new CopyWebpackPlugin({
|
|
102
|
+
patterns: [...getCopyPatternsForBlocks(blocks, distFolder)],
|
|
103
|
+
}),
|
|
104
|
+
]),
|
|
105
|
+
new CustomBlocksCSSHandler({
|
|
106
|
+
blocks,
|
|
107
|
+
srcFolder,
|
|
108
|
+
distFolder,
|
|
109
|
+
postcssConfigLocation,
|
|
110
|
+
}),
|
|
111
|
+
new BlockJsonAssetTransformer({ distFolder }),
|
|
112
|
+
],
|
|
187
113
|
output: {
|
|
188
114
|
path: distFolder,
|
|
189
115
|
clean: true,
|
|
@@ -198,7 +124,7 @@ export default function blocks(args) {
|
|
|
198
124
|
},
|
|
199
125
|
mode: isProduction ? "production" : "development",
|
|
200
126
|
});
|
|
201
|
-
if (
|
|
127
|
+
if (isWatch) {
|
|
202
128
|
const watching = compiler.watch({
|
|
203
129
|
// Example
|
|
204
130
|
aggregateTimeout: 300,
|
|
@@ -252,7 +178,7 @@ export default function blocks(args) {
|
|
|
252
178
|
});
|
|
253
179
|
}
|
|
254
180
|
}
|
|
255
|
-
async function
|
|
181
|
+
export async function getRootFileJSEntryPoints({ srcFolder, excludeRootFiles, }) {
|
|
256
182
|
const entryPoints = {};
|
|
257
183
|
const rootFiles = await readdir(srcFolder, {
|
|
258
184
|
withFileTypes: true,
|
|
@@ -275,63 +201,263 @@ async function getAllBlocksJSEntryPoints({ srcFolder, shouldAlwaysCompileRootFil
|
|
|
275
201
|
continue;
|
|
276
202
|
}
|
|
277
203
|
entryPoints[toCamelCase(entryName)] = {
|
|
278
|
-
import:
|
|
204
|
+
import: [srcFolder, fileNameAndExtension].join(pathSeparator),
|
|
279
205
|
filename: `${entryName}${isProduction ? `.[contenthash]` : ""}.js`,
|
|
280
206
|
};
|
|
281
207
|
}
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
console.log({ entryPoints: {} });
|
|
296
|
-
return {};
|
|
297
|
-
}
|
|
298
|
-
for (const block of blockFolders) {
|
|
299
|
-
const blockFiles = await readdir(`${srcFolder}/${block}`, {
|
|
300
|
-
withFileTypes: true,
|
|
301
|
-
}).then((blockDirFiles) => {
|
|
302
|
-
return blockDirFiles
|
|
303
|
-
.filter((file) => !file.isDirectory())
|
|
304
|
-
.map((file) => file.name)
|
|
305
|
-
.filter((file) => file.endsWith(".js") ||
|
|
306
|
-
file.endsWith(".ts") ||
|
|
307
|
-
file.endsWith(".jsx") ||
|
|
308
|
-
file.endsWith(".tsx"));
|
|
309
|
-
});
|
|
310
|
-
for (const blockJSFile of blockFiles) {
|
|
311
|
-
let blockBonusScriptNumber = 1;
|
|
312
|
-
const [filename] = blockJSFile.split(".");
|
|
313
|
-
let entryName;
|
|
314
|
-
if (filename === "index") {
|
|
315
|
-
entryName = block;
|
|
316
|
-
}
|
|
317
|
-
else if (filename === "editor") {
|
|
318
|
-
entryName = `${block}-editor`;
|
|
319
|
-
}
|
|
320
|
-
else if (filename === "view") {
|
|
321
|
-
entryName = `${block}-view`;
|
|
322
|
-
}
|
|
323
|
-
else {
|
|
324
|
-
entryName = `${block}-bonus${blockBonusScriptNumber}`;
|
|
325
|
-
blockBonusScriptNumber++;
|
|
208
|
+
return entryPoints;
|
|
209
|
+
}
|
|
210
|
+
export function getAllBlocksJSEntryPoints({ srcFolder, blocks, }) {
|
|
211
|
+
const entryPoints = {};
|
|
212
|
+
const blocksJsonObjects = Object.values(blocks);
|
|
213
|
+
for (const { blockFolder, blockJson } of blocksJsonObjects) {
|
|
214
|
+
const fields = getBlockJsonScriptFields(blockJson);
|
|
215
|
+
if (!fields) {
|
|
216
|
+
continue;
|
|
217
|
+
}
|
|
218
|
+
for (const value of Object.values(fields).flat()) {
|
|
219
|
+
if ("string" !== typeof value || !value.startsWith("file:")) {
|
|
220
|
+
continue;
|
|
326
221
|
}
|
|
222
|
+
// Removes the `file:` prefix.
|
|
223
|
+
const filepath = join(blockFolder, value.replace("file:", ""));
|
|
224
|
+
const entryName = filepath
|
|
225
|
+
.replace(srcFolder, "")
|
|
226
|
+
.replace(extname(filepath), "")
|
|
227
|
+
.replace(/\\/g, "/")
|
|
228
|
+
.split("/")
|
|
229
|
+
.filter((string) => string !== "")
|
|
230
|
+
.join("-");
|
|
327
231
|
entryPoints[toCamelCase(entryName)] = {
|
|
328
|
-
import:
|
|
329
|
-
filename: `${
|
|
232
|
+
import: filepath,
|
|
233
|
+
filename: `${filepath.replace(`${srcFolder}${pathSeparator}`, "").replace(extname(filepath), "")}${isProduction ? `.[contenthash]` : ""}.js`,
|
|
330
234
|
};
|
|
331
235
|
}
|
|
332
236
|
}
|
|
333
|
-
// eslint-disable-next-line no-console
|
|
334
|
-
console.log({ entryPoints });
|
|
335
237
|
return entryPoints;
|
|
336
238
|
}
|
|
239
|
+
export async function getBlockJsonFiles(srcFolder, excludeBlocks) {
|
|
240
|
+
const blockJsonFiles = await glob
|
|
241
|
+
.promise(`${srcFolder.replaceAll(pathSeparator, "/")}/**/block.json.ts`, {
|
|
242
|
+
ignore: excludeBlocks.map((blockName) => `${srcFolder.replaceAll(pathSeparator, "/")}/**/${blockName}/block.json.ts`),
|
|
243
|
+
})
|
|
244
|
+
.then((paths) => paths.map((path) => path.replaceAll("/", pathSeparator)));
|
|
245
|
+
const blocks = {};
|
|
246
|
+
for (const blockJsonFile of blockJsonFiles) {
|
|
247
|
+
const blockJson = await tsImport(`${blockJsonFile.split(pathSeparator).shift()?.includes(":") ? `file:///` : ""}${blockJsonFile}`, import.meta.url).then((loadedFile) => {
|
|
248
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
249
|
+
return loadedFile.default;
|
|
250
|
+
});
|
|
251
|
+
const blockName = blockJsonFile
|
|
252
|
+
.replace(`${pathSeparator}block.json.ts`, "")
|
|
253
|
+
.split(pathSeparator)
|
|
254
|
+
.pop();
|
|
255
|
+
blocks[blockName] = { blockFolder: dirname(blockJsonFile), blockJson };
|
|
256
|
+
}
|
|
257
|
+
return blocks;
|
|
258
|
+
}
|
|
259
|
+
export function getBlockJsonScriptFields(blockJson) {
|
|
260
|
+
const scriptFields = ["viewScript", "script", "editorScript"];
|
|
261
|
+
let result = null;
|
|
262
|
+
for (const field of scriptFields) {
|
|
263
|
+
if (Object.hasOwn(blockJson, field)) {
|
|
264
|
+
if (result === null) {
|
|
265
|
+
result = {};
|
|
266
|
+
}
|
|
267
|
+
result[field] = blockJson[field];
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
return result;
|
|
271
|
+
}
|
|
272
|
+
export function getBlockJsonStyleFields(blockJson) {
|
|
273
|
+
const styleFields = ["viewStyle", "style", "editorStyle"];
|
|
274
|
+
let result = null;
|
|
275
|
+
for (const field of styleFields) {
|
|
276
|
+
if (Object.hasOwn(blockJson, field)) {
|
|
277
|
+
if (result === null) {
|
|
278
|
+
result = {};
|
|
279
|
+
}
|
|
280
|
+
result[field] = blockJson[field];
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
return result;
|
|
284
|
+
}
|
|
285
|
+
function getSassOptions(srcFolder) {
|
|
286
|
+
return {
|
|
287
|
+
importers: [
|
|
288
|
+
{
|
|
289
|
+
findFileUrl(url) {
|
|
290
|
+
if (!url.startsWith("sitecss:"))
|
|
291
|
+
return null;
|
|
292
|
+
const pathname = url.substring(8);
|
|
293
|
+
return pathToFileURL(`${resolvePath(srcFolder, "../css")}${pathname.startsWith("/") ? pathname : `/${pathname}`}`);
|
|
294
|
+
},
|
|
295
|
+
},
|
|
296
|
+
],
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
function getCopyPatternsForBlocks(blocks, distFolder) {
|
|
300
|
+
const blocksCopyPatterns = [];
|
|
301
|
+
const blocksEntries = Object.entries(blocks);
|
|
302
|
+
for (const [blockName, { blockFolder, blockJson }] of blocksEntries) {
|
|
303
|
+
// Generate block.json file.
|
|
304
|
+
blocksCopyPatterns.push({
|
|
305
|
+
from: `${blockFolder}/block.json.ts`,
|
|
306
|
+
to: `${distFolder}/${blockName}/block.json`,
|
|
307
|
+
noErrorOnMissing: true,
|
|
308
|
+
transform: {
|
|
309
|
+
transformer() {
|
|
310
|
+
return JSON.stringify(blockJson, null, 2);
|
|
311
|
+
},
|
|
312
|
+
cache: true,
|
|
313
|
+
},
|
|
314
|
+
});
|
|
315
|
+
// Copy render.php file
|
|
316
|
+
blocksCopyPatterns.push({
|
|
317
|
+
from: `${blockFolder}/render.php`,
|
|
318
|
+
to: `${distFolder}/${blockName}/render.php`,
|
|
319
|
+
noErrorOnMissing: true,
|
|
320
|
+
});
|
|
321
|
+
// Copy index.php file
|
|
322
|
+
blocksCopyPatterns.push({
|
|
323
|
+
from: `${blockFolder}/index.php`,
|
|
324
|
+
to: `${distFolder}/${blockName}/index.php`,
|
|
325
|
+
noErrorOnMissing: true,
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
return blocksCopyPatterns;
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* This class handles CSS compilation for blocks.
|
|
332
|
+
*/
|
|
333
|
+
class CustomBlocksCSSHandler {
|
|
334
|
+
blocks;
|
|
335
|
+
distFolder;
|
|
336
|
+
srcFolder;
|
|
337
|
+
postcssConfigLocation;
|
|
338
|
+
constructor({ blocks, srcFolder, distFolder, postcssConfigLocation, }) {
|
|
339
|
+
this.blocks = blocks;
|
|
340
|
+
this.srcFolder = srcFolder;
|
|
341
|
+
this.distFolder = distFolder;
|
|
342
|
+
this.postcssConfigLocation = postcssConfigLocation;
|
|
343
|
+
}
|
|
344
|
+
apply(compiler) {
|
|
345
|
+
// RawSource is one of the "sources" classes that should be used
|
|
346
|
+
// to represent asset sources in compilation.
|
|
347
|
+
const { RawSource } = webpack.sources;
|
|
348
|
+
compiler.hooks.thisCompilation.tap({
|
|
349
|
+
name: "CustomBlocksCSSHandler",
|
|
350
|
+
stage: webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONAL,
|
|
351
|
+
}, (compilation) => {
|
|
352
|
+
compilation.hooks.processAssets.tapPromise("CustomBlocksCSSHandler", async () => {
|
|
353
|
+
const blocksJsonObjects = Object.values(this.blocks);
|
|
354
|
+
for (const { blockFolder, blockJson } of blocksJsonObjects) {
|
|
355
|
+
const fields = getBlockJsonStyleFields(blockJson);
|
|
356
|
+
if (!fields) {
|
|
357
|
+
continue;
|
|
358
|
+
}
|
|
359
|
+
for (const value of Object.values(fields).flat()) {
|
|
360
|
+
if ("string" !== typeof value || !value.startsWith("file:")) {
|
|
361
|
+
continue;
|
|
362
|
+
}
|
|
363
|
+
// Removes the `file:` prefix.
|
|
364
|
+
const filepath = join(blockFolder, value.replace("file:", ""));
|
|
365
|
+
const fileNameWithExtension = basename(filepath);
|
|
366
|
+
let css = readFileSync(filepath, "utf8");
|
|
367
|
+
if (extname(fileNameWithExtension) === ".scss") {
|
|
368
|
+
css = await compileStringAsync(css, getSassOptions(this.srcFolder)).then((result) => result.css);
|
|
369
|
+
}
|
|
370
|
+
let newFileNameWithExtension = fileNameWithExtension;
|
|
371
|
+
let newMatch = filepath.replace(`${this.srcFolder}/`, "");
|
|
372
|
+
if (isProduction) {
|
|
373
|
+
const fileBuffer = readFileSync(filepath);
|
|
374
|
+
const contentHash = crypto.createHash("shake256", {
|
|
375
|
+
outputLength: 10,
|
|
376
|
+
});
|
|
377
|
+
contentHash.update(fileBuffer);
|
|
378
|
+
newFileNameWithExtension = `${fileNameWithExtension.split(".")[0]}.${contentHash.digest("hex")}.css`;
|
|
379
|
+
newMatch = newMatch.replace(fileNameWithExtension, newFileNameWithExtension);
|
|
380
|
+
}
|
|
381
|
+
const { plugins, options } = await postcssLoadConfig({}, this.postcssConfigLocation)
|
|
382
|
+
.then(({ plugins, options }) => {
|
|
383
|
+
options.from = filepath;
|
|
384
|
+
options.to = newMatch;
|
|
385
|
+
return { plugins, options };
|
|
386
|
+
})
|
|
387
|
+
.catch((error) => {
|
|
388
|
+
if (error &&
|
|
389
|
+
error instanceof Error &&
|
|
390
|
+
error.message.startsWith("No PostCSS Config found")) {
|
|
391
|
+
const postCSSPlugins = [autoprefixer];
|
|
392
|
+
if (isProduction) {
|
|
393
|
+
postCSSPlugins.push(cssnano({ preset: "default" }));
|
|
394
|
+
}
|
|
395
|
+
return {
|
|
396
|
+
plugins: postCSSPlugins,
|
|
397
|
+
options: {
|
|
398
|
+
from: filepath,
|
|
399
|
+
to: newMatch,
|
|
400
|
+
},
|
|
401
|
+
};
|
|
402
|
+
}
|
|
403
|
+
throw error;
|
|
404
|
+
});
|
|
405
|
+
const result = await postcss(plugins).process(css, options);
|
|
406
|
+
compilation.emitAsset(newMatch, new RawSource(result.css));
|
|
407
|
+
if (result.map) {
|
|
408
|
+
compilation.emitAsset(`${newMatch}.map`, new RawSource(result.map.toString()));
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
});
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
class BlockJsonAssetTransformer {
|
|
417
|
+
distFolder;
|
|
418
|
+
constructor({ distFolder }) {
|
|
419
|
+
this.distFolder = distFolder;
|
|
420
|
+
}
|
|
421
|
+
apply(compiler) {
|
|
422
|
+
compiler.hooks.afterEmit.tapPromise("BlockJsonAssetTransformer", async (compilation) => {
|
|
423
|
+
const blockJsonFiles = Object.keys(compilation.assets).filter((asset) => asset.endsWith("block.json"));
|
|
424
|
+
for (const blockJsonFile of blockJsonFiles) {
|
|
425
|
+
await readFile(`${this.distFolder}/${blockJsonFile}`, "utf-8")
|
|
426
|
+
.then((data) => {
|
|
427
|
+
return JSON.parse(data);
|
|
428
|
+
})
|
|
429
|
+
.then((json) => {
|
|
430
|
+
const blockName = blockJsonFile.replace("/block.json", "");
|
|
431
|
+
[
|
|
432
|
+
getBlockJsonScriptFields(json),
|
|
433
|
+
getBlockJsonStyleFields(json),
|
|
434
|
+
].forEach((fields) => {
|
|
435
|
+
if (fields === null) {
|
|
436
|
+
return;
|
|
437
|
+
}
|
|
438
|
+
Object.entries(fields).forEach(([fieldName, value]) => {
|
|
439
|
+
const values = [value].flat(1);
|
|
440
|
+
json[fieldName] = values.map((srcFilePath) => {
|
|
441
|
+
const fileName = srcFilePath
|
|
442
|
+
.replace("file:./", "")
|
|
443
|
+
.replace(extname(srcFilePath), "");
|
|
444
|
+
const hashedAsset = Object.keys(compilation.assets).find((asset) => {
|
|
445
|
+
return (asset.startsWith(`${blockName}/${fileName}`) &&
|
|
446
|
+
!asset.endsWith(".php"));
|
|
447
|
+
});
|
|
448
|
+
return hashedAsset
|
|
449
|
+
? `file:./${hashedAsset.replace(`${blockName}/`, "")}`
|
|
450
|
+
: srcFilePath;
|
|
451
|
+
});
|
|
452
|
+
});
|
|
453
|
+
});
|
|
454
|
+
return json;
|
|
455
|
+
})
|
|
456
|
+
.then(async (transformedJson) => {
|
|
457
|
+
await writeFile(`${this.distFolder}/${blockJsonFile}`, JSON.stringify(transformedJson, undefined, 2), "utf-8");
|
|
458
|
+
});
|
|
459
|
+
}
|
|
460
|
+
});
|
|
461
|
+
}
|
|
462
|
+
}
|
|
337
463
|
//# sourceMappingURL=blocks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../src/commands/blocks.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../src/commands/blocks.ts"],"names":[],"mappings":"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"}
|