@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.
@@ -1,3 +1,24 @@
1
- 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\n Example usage:\n $ smash-cli blocks --watch --in src --out build --tsConfigPath tsconfig.json\n";
2
- export default function blocks(args: string[]): void;
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":"AAsBA,eAAO,MAAM,iBAAiB,gxCAiB7B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAuP5C"}
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"}
@@ -1,20 +1,19 @@
1
1
  import crypto from "node:crypto";
2
- import { readFileSync, writeFileSync } from "node:fs";
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 plugins = [
60
- ...(defaultConfig.plugins?.filter((plugin) => {
61
- return ![
62
- "DependencyExtractionWebpackPlugin",
63
- "CopyPlugin", // CopyWebpackPlugin
64
- ].includes(plugin?.constructor.name ?? "");
65
- }) ?? []),
66
- new DependencyExtractionWebpackPlugin({
67
- combineAssets: true,
68
- }),
69
- new CopyWebpackPlugin({
70
- patterns: [
71
- {
72
- from: `${srcFolder}/**/block.json`,
73
- noErrorOnMissing: true,
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: () => getAllBlocksJSEntryPoints({
180
- srcFolder,
181
- shouldAlwaysCompileRootFiles,
182
- excludeBlocks,
183
- excludeRootFiles,
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: 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 (args.find((value) => value === "--watch")) {
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 getAllBlocksJSEntryPoints({ srcFolder, shouldAlwaysCompileRootFiles, excludeBlocks, excludeRootFiles, }) {
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: `${srcFolder}/${fileNameAndExtension}`,
204
+ import: [srcFolder, fileNameAndExtension].join(pathSeparator),
279
205
  filename: `${entryName}${isProduction ? `.[contenthash]` : ""}.js`,
280
206
  };
281
207
  }
282
- const blockFolders = await readdir(`${srcFolder}`, {
283
- withFileTypes: true,
284
- })
285
- .then((srcDirFiles) => {
286
- return srcDirFiles
287
- .filter((dirent) => dirent.isDirectory())
288
- .map((dirent) => dirent.name);
289
- })
290
- .then((blockFolders) => {
291
- return blockFolders.filter((block) => !excludeBlocks.includes(block));
292
- });
293
- if (blockFolders.length === 0 && !shouldAlwaysCompileRootFiles) {
294
- // If there are no blocks, don't compile root files, unless the flag is present.
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: `${srcFolder}/${block}/${blockJSFile}`,
329
- filename: `${block}/${filename}${isProduction ? `.[contenthash]` : ""}.js`,
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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"}