diff --git a/.changeset/fix-prettier-not-installed-hang.md b/.changeset/fix-prettier-not-installed-hang.md new file mode 100644 index 00000000..9144053e --- /dev/null +++ b/.changeset/fix-prettier-not-installed-hang.md @@ -0,0 +1,5 @@ +--- +"eslint-plugin-prettier": patch +--- + +fix: throw clear error when prettier is not installed instead of hanging diff --git a/eslint-plugin-prettier.js b/eslint-plugin-prettier.js index 7a6eceda..cc161ce6 100644 --- a/eslint-plugin-prettier.js +++ b/eslint-plugin-prettier.js @@ -211,6 +211,17 @@ const eslintPluginPrettier = { [sourceCode.ast.type](node) { if (!prettierFormat) { // Prettier is expensive to load, so only load it if needed. + try { + require.resolve('prettier'); + } catch (error) { + if (error?.code !== 'MODULE_NOT_FOUND') { + throw error; + } + throw new Error( + 'eslint-plugin-prettier requires "prettier" package to be installed. ' + + 'Please install it with: npm install -D prettier', + ); + } prettierFormat = /** @type {PrettierFormat} */ ( require('synckit').createSyncFn(require.resolve('./worker.mjs')) );