@soleil-se/build-app
Version:
Script for building WebApps, RESTApps and Widgets with Svelte in Sitevision.
39 lines (34 loc) • 1.19 kB
JavaScript
import chalk from 'chalk';
import { getTimestamp, logWarning } from '@soleil-se/build-utils/log';
function logNotInstalledWarning() {
logWarning(`ESLint is not installed, run ${chalk.white('npm i eslint --save-dev')} or start with ${chalk.white('--no-eslint')} flag.`);
}
let ESLint;
export default function createESLint({ src }) {
return async () => {
try {
// eslint-disable-next-line import/no-extraneous-dependencies,node/no-extraneous-import
ESLint = ESLint || await import('eslint').then((pkg) => pkg.ESLint);
} catch (e) {
logNotInstalledWarning();
return;
}
if (ESLint) {
const eslint = new ESLint({ errorOnUnmatchedPattern: false });
const formatter = await eslint.loadFormatter();
const results = await eslint.lintFiles(src);
const errors = ESLint.getErrorResults(results);
const output = formatter.format(results);
if (errors.length) {
const error = new Error(`\n${output}`);
error.showStack = false;
throw error;
}
if (output) {
console.log(`${getTimestamp()} Warning:\n${output}`);
}
} else {
logNotInstalledWarning();
}
};
}