@mx-design/config-eslint9
Version:
update eslint 9.x configuration
62 lines (59 loc) • 2.15 kB
JavaScript
import ejs from 'ejs';
import { eslintTemplate } from '../template/eslint.mjs';
import { execPromise } from '../utils/execPromise.mjs';
import '../utils/print.mjs';
import { packageSeparator, answer } from './constants.mjs';
const ejsTemp = ejs.compile(eslintTemplate);
async function handleEslint(shareData, next) {
const {
[answer]: { typescript, react, vue, nextjs, tailwind, prettier }
} = shareData;
const result = {};
const reactPackages = [
`eslint-plugin-react${packageSeparator}7.37.2`,
`eslint-plugin-react-hooks${packageSeparator}5.1.0`,
`eslint-plugin-react-refresh${packageSeparator}0.4.16`
];
result.packages = [];
result.commands = [];
result.packages.push(
...[
`eslint${packageSeparator}9.17.0`,
`@eslint/js${packageSeparator}9.17.0`,
`eslint-plugin-import-x${packageSeparator}4.6.1`,
`eslint-import-resolver-typescript${packageSeparator}3.7.0`,
`globals${packageSeparator}15.14.0`
]
);
if (typescript) {
result.packages.push(...[`typescript-eslint${packageSeparator}8.18.1`]);
}
if (vue) {
result.packages.push(...[`eslint-plugin-vue${packageSeparator}9.32.0`]);
}
if (tailwind) {
result.packages.push(...[`eslint-plugin-tailwindcss${packageSeparator}3.17.5`]);
}
if (prettier) {
result.packages.push(...[`eslint-plugin-prettier${packageSeparator}5.2.1`]);
result.packages.push(...[`eslint-config-prettier${packageSeparator}10.1.1`]);
}
if (nextjs) {
result.packages.push(...[`@next/eslint-plugin-next${packageSeparator}15.2.3`, ...reactPackages]);
}
if (react && !nextjs) {
result.packages.push(...reactPackages);
}
result.commands.push({
label: "\u3010done\u3011",
text: "generating eslint.config.mjs...",
successText: "eslint.config.mjs has been generated in current directory",
failText: "fail to generate eslint.config.mjs in current directory",
fn: () => execPromise(`cat << EOF > eslint.config.mjs
${ejsTemp({ javascript: true, typescript, react: nextjs || react, vue, nextjs, tailwind, prettier })}
EOF`)
});
shareData.eslint = result;
next();
}
export { handleEslint };