diff --git a/.changeset/nervous-berries-speak.md b/.changeset/nervous-berries-speak.md new file mode 100644 index 00000000..2bf05b7c --- /dev/null +++ b/.changeset/nervous-berries-speak.md @@ -0,0 +1,5 @@ +--- +"10up-toolkit": patch +--- + +Fix include `viewStyle` assets in dynamic version generation diff --git a/packages/toolkit/__tests__/build-project-use-block-assets/__fixtures__/includes/blocks/example/block.json b/packages/toolkit/__tests__/build-project-use-block-assets/__fixtures__/includes/blocks/example/block.json index 17afb8a7..eba82c07 100644 --- a/packages/toolkit/__tests__/build-project-use-block-assets/__fixtures__/includes/blocks/example/block.json +++ b/packages/toolkit/__tests__/build-project-use-block-assets/__fixtures__/includes/blocks/example/block.json @@ -39,5 +39,6 @@ } }, "editorScript": "file:./index.js", - "editorStyle": "file:./editor-styles.css" + "editorStyle": "file:./editor-styles.css", + "viewStyle": "file:./view.css" } diff --git a/packages/toolkit/__tests__/build-project-use-block-assets/__fixtures__/includes/blocks/example/view.css b/packages/toolkit/__tests__/build-project-use-block-assets/__fixtures__/includes/blocks/example/view.css new file mode 100644 index 00000000..23444628 --- /dev/null +++ b/packages/toolkit/__tests__/build-project-use-block-assets/__fixtures__/includes/blocks/example/view.css @@ -0,0 +1,5 @@ +/* view.css */ + +html { + background-color: #f00; +} \ No newline at end of file diff --git a/packages/toolkit/__tests__/build-project-use-block-assets/test.js b/packages/toolkit/__tests__/build-project-use-block-assets/test.js index cd33ef68..14381fa9 100644 --- a/packages/toolkit/__tests__/build-project-use-block-assets/test.js +++ b/packages/toolkit/__tests__/build-project-use-block-assets/test.js @@ -51,4 +51,15 @@ describe('build a project (with useBlockAssets)', () => { fs.existsSync(path.join(__dirname, 'dist', 'blocks', 'example', 'editor-styles.css')), ).toBeTruthy(); }); + + it('generates version when using style/viewStyle', () => { + const blockJson = JSON.parse( + fs + .readFileSync(path.join(__dirname, 'dist', 'blocks', 'example', 'block.json')) + .toString(), + ); + expect(blockJson).toMatchObject({ + version: 'c5b9d82d328781bf3f4a5c8f19dfb700494821c2b514b7e5e724154f1eea10eb', + }); + }); }); diff --git a/packages/toolkit/__tests__/build-project/__fixtures__/includes/blocks/example/block.json b/packages/toolkit/__tests__/build-project/__fixtures__/includes/blocks/example/block.json index 24c94f14..6823fbb5 100644 --- a/packages/toolkit/__tests__/build-project/__fixtures__/includes/blocks/example/block.json +++ b/packages/toolkit/__tests__/build-project/__fixtures__/includes/blocks/example/block.json @@ -40,4 +40,3 @@ }, "editorScript": "file:../../../../dist/editor.js", "editorStyle": "file:../../../../dist/editor.css" -} diff --git a/packages/toolkit/utils/blocks.js b/packages/toolkit/utils/blocks.js index 884cd59e..18bfa742 100644 --- a/packages/toolkit/utils/blocks.js +++ b/packages/toolkit/utils/blocks.js @@ -58,12 +58,19 @@ const transformBlockJson = (content, absoluteFilename) => { return content; } const metadata = JSON.parse(rawMetadata); - const { version, style } = metadata; + const { version, style = [], viewStyle = [] } = metadata; const styleArray = Array.isArray(style) ? style : [style]; + const viewStyleArray = Array.isArray(viewStyle) ? viewStyle : [viewStyle]; + const combinedStylesArray = [...styleArray, ...viewStyleArray]; // check whether the style property is defined and a local file path - const isFilePath = styleArray?.some((styleName) => styleName?.startsWith('file:')); + const styleHasFilePath = styleArray?.some((styleName) => styleName?.startsWith('file:')); + const viewStyleHasFilePath = viewStyleArray?.some((viewStyleName) => + viewStyleName?.startsWith('file:'), + ); + const isFilePath = styleHasFilePath || viewStyleHasFilePath; + const hasVersion = version !== undefined; const absoluteDirectory = absoluteFilename.replace(/block\.json$/, ''); @@ -71,7 +78,7 @@ const transformBlockJson = (content, absoluteFilename) => { let styleFileContentHash = ''; if (!hasVersion && isFilePath) { - styleArray.forEach((rawStylePath) => { + combinedStylesArray.forEach((rawStylePath) => { if (!rawStylePath.startsWith('file:')) { return; }