UNPKG

@gravityforms/gulp-tasks

Version:
104 lines (93 loc) 2.87 kB
const gulp = require( 'gulp' ); const glob = require( 'glob' ); const fs = require( 'fs' ); const { ESLint } = require( 'eslint' ); const getConfig = require( '../../config' ); const { config } = getConfig(); const { trailingSlashIt } = require( '../utils/tools' ); const args = require( '../utils/get-args' ); const eslintrcConfig = require( '../../.eslintrc.js' ); /** * @function eslintProcess * @description Run eslint based on the options provided. * @async * @param {object} options Options object. * @param {Array<object>} options.eslintConfig Array of objects containing eslint configurations. * @return {Promise} */ async function eslintProcess( { eslintConfig } ) { let error = false; for ( const configObj of eslintConfig ) { const files = []; // Get files from glob pattern. if ( typeof configObj.src === 'string' ) { files.push( ...glob.sync( configObj.src ) ); } else if ( Array.isArray( configObj.src ) ) { for ( const src of configObj.src ) { files.push( ...glob.sync( src ) ); } } const eslint = new ESLint( { fix: ! args.nofix, baseConfig: eslintrcConfig, useEslintrc: ! process.env.INIT_CWD.includes( 'packages/npm' ), } ); const results = await eslint.lintFiles( files ); const formatter = await eslint.loadFormatter( 'stylish' ); const resultText = formatter.format( results ); results.forEach( ( result ) => { const output = result.output || result.code; const errorCount = result.errorCount; if ( errorCount > 0 && output ) { fs.writeFileSync( result.filePath, output ); } } ); if ( resultText ) { console.log( resultText ); } if ( results.some( ( result ) => result.errorCount > 0 ) ) { error = true; } } if ( error ) { process.exit( 1 ); } } module.exports = Object.assign( {}, { admin() { const eslintConfig = config?.eslint?.adminJs || [ { src: [ `${ trailingSlashIt( config.paths.js_src ) }admin/**/*.js`, `${ trailingSlashIt( config.paths.js_src ) }admin/**/*.jsx`, ], dest: `${ trailingSlashIt( config.paths.js_src ) }admin/`, } ]; return eslintProcess( { eslintConfig, } ); }, common() { const eslintConfig = config?.eslint?.commonJs || [ { src: [ `${ trailingSlashIt( config.paths.js_src ) }common/**/*.js`, `${ trailingSlashIt( config.paths.js_src ) }common/**/*.jsx`, ], dest: `${ trailingSlashIt( config.paths.js_src ) }common/`, } ]; return eslintProcess( { eslintConfig, } ); }, theme() { const eslintConfig = config?.eslint?.themeJs || [ { src: [ `${ trailingSlashIt( config.paths.js_src ) }theme/**/*.js`, `${ trailingSlashIt( config.paths.js_src ) }theme/**/*.jsx`, ], dest: `${ trailingSlashIt( config.paths.js_src ) }theme/`, } ]; return eslintProcess( { eslintConfig, } ); }, }, config?.tasks?.builtins?.eslint || {} );