Skip to content

Commit

Permalink
refactor[scripts/prettier]: respect .prettierignore when resolving js…
Browse files Browse the repository at this point in the history
… files via glob (#27627)

This script is used on CI in `yarn_lint` job. With current `glob` call
settings, it includes a bunch of build files, which are actually ignored
by listing them in `.prettierignore`. This check is not failing only
because there is no build step before it.

If you run `node ./scripts/prettier/index` with build files present, you
will see a bunch of files listed as non-formatted. These changes add a
simple logic to include all paths listed in `.prettierignore` to ignore
list of `glob` call with transforming them from gitignore-style to
glob-style.

This should unblock CI for #27612,
where `flow-typed` directory will be added, turned out that including it
in `.prettierignore` is not enough.
  • Loading branch information
hoxyq authored Oct 30, 2023
1 parent 0965fbc commit 0c63487
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 4 deletions.
5 changes: 4 additions & 1 deletion .prettierignore
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
build

packages/react-devtools-core/dist
packages/react-devtools-extensions/chrome/build
packages/react-devtools-extensions/firefox/build
packages/react-devtools-extensions/edge/build
packages/react-devtools-extensions/shared/build
packages/react-devtools-extensions/src/ErrorTesterCompiled.js
packages/react-devtools-inline/dist
packages/react-devtools-shared/src/hooks/__tests__/__source__/__compiled__/
packages/react-devtools-shared/src/hooks/__tests__/__source__/__untransformed__/
packages/react-devtools-shell/dist
packages/react-devtools-timeline/dist
packages/react-devtools-timeline/static
packages/react-devtools-timeline/static
32 changes: 29 additions & 3 deletions scripts/prettier/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ const chalk = require('chalk');
const glob = require('glob');
const prettier = require('prettier');
const fs = require('fs');
const path = require('path');
const listChangedFiles = require('../shared/listChangedFiles');
const prettierConfigPath = require.resolve('../../.prettierrc');

Expand All @@ -24,14 +25,39 @@ const changedFiles = onlyChanged ? listChangedFiles() : null;
let didWarn = false;
let didError = false;

const prettierIgnoreFilePath = path.join(
__dirname,
'..',
'..',
'.prettierignore'
);
const prettierIgnore = fs.readFileSync(prettierIgnoreFilePath, {
encoding: 'utf8',
});
const ignoredPathsListedInPrettierIgnore = prettierIgnore
.toString()
.replace(/\r\n/g, '\n')
.split('\n')
.filter(line => !!line && !line.startsWith('#'));

const ignoredPathsListedInPrettierIgnoreInGlobFormat =
ignoredPathsListedInPrettierIgnore.map(ignoredPath => {
const existsAndDirectory =
fs.existsSync(ignoredPath) && fs.lstatSync(ignoredPath).isDirectory();

if (existsAndDirectory) {
return path.join(ignoredPath, '/**');
}

return ignoredPath;
});

const files = glob
.sync('**/*.js', {
ignore: [
'**/node_modules/**',
'**/cjs/**',
'**/__compiled__/**',
'**/__untransformed__/**',
'packages/react-devtools-extensions/src/ErrorTesterCompiled.js',
...ignoredPathsListedInPrettierIgnoreInGlobFormat,
],
})
.filter(f => !onlyChanged || changedFiles.has(f));
Expand Down

0 comments on commit 0c63487

Please sign in to comment.