woocommerce/packages/woocommerce-admin/lint-staged.config.js

48 lines
1.2 KiB
JavaScript

module.exports = {
'*.scss': [ 'npm run lint:css-fix' ],
'client/**/*.(t|j)s?(x)': [
'wp-scripts format-js',
'wp-scripts lint-js',
'npm run test-staged',
],
'packages/**/*.(t|j)s?(x)': ( packageFiles ) => {
const globalScripts = [
`wp-scripts format-js ${ packageFiles.join( ' ' ) }`,
`wp-scripts lint-js ${ packageFiles.join( ' ' ) }`,
];
const filesByPackage = packageFiles.reduce(
( packages, packageFile ) => {
const packageNameMatch = packageFile.match(
/\/packages\/([a-z0-9\-]+)\//
);
if ( ! packageNameMatch ) {
return packages;
}
const packageName = packageNameMatch[ 1 ];
if ( Array.isArray( packages[ packageName ] ) ) {
packages[ packageName ].push( packageFile );
} else {
packages[ packageName ] = [ packageFile ];
}
return packages;
},
{}
);
const workspaceScripts = Object.keys( filesByPackage ).map(
( packageName ) =>
`lerna --scope @woocommerce/${ packageName } run test-staged -- ${ filesByPackage[
packageName
].join( ' ' ) }`
);
return globalScripts.concat( workspaceScripts );
},
'*.php': [ 'php -d display_errors=1 -l', 'composer run-script phpcs' ],
};