diff --git a/.changeset/fix-standalone-prettier-import.md b/.changeset/fix-standalone-prettier-import.md new file mode 100644 index 000000000..fbbb1fccd --- /dev/null +++ b/.changeset/fix-standalone-prettier-import.md @@ -0,0 +1,5 @@ +--- +'@shopify/prettier-plugin-liquid': patch +--- + +Fix standalone build importing `prettier` instead of `prettier/standalone`, which caused browser bundlers (webpack, rollup, vite) consuming `standalone.js` to try to resolve Node builtins (`module`, `url`, `path`) from prettier's main entry diff --git a/packages/prettier-plugin-liquid/webpack.config.js b/packages/prettier-plugin-liquid/webpack.config.js index 5a8d7ba53..3c435e5b7 100644 --- a/packages/prettier-plugin-liquid/webpack.config.js +++ b/packages/prettier-plugin-liquid/webpack.config.js @@ -15,9 +15,18 @@ module.exports = { }, }, externals: { + // The standalone bundle is browser-only. Downstream bundlers that consume + // standalone.js (webpack, rollup, vite) see a UMD wrapper whose `commonjs` + // and `commonjs2` branches `require('prettier')`. That import resolves to + // prettier's Node-flavored main entry, which pulls in `module`, `url`, and + // `path` and breaks browser builds. Route those branches to + // `prettier/standalone` so downstream bundlers land on prettier's + // browser-safe entry. `root: 'prettier'` is kept so