From ac2777989b6627056becde3f02ec3bfb6dd1158f Mon Sep 17 00:00:00 2001 From: bingtsingw Date: Tue, 23 Aug 2022 16:54:25 +0800 Subject: [PATCH] feat: add task: eslint --- eslint/index.js | 36 +++++++++++++++++++++++++++++++++++ templates/eslint/eslintignore | 1 + 2 files changed, 37 insertions(+) create mode 100644 eslint/index.js create mode 100644 templates/eslint/eslintignore diff --git a/eslint/index.js b/eslint/index.js new file mode 100644 index 0000000..2748a68 --- /dev/null +++ b/eslint/index.js @@ -0,0 +1,36 @@ +const { install, packageJson, json, deleteFiles, template } = require('mrm-core'); +const { cosmiconfig, hasLintStaged } = require('../utils'); +const { join } = require('path'); + +const task = () => { + deleteFiles(cosmiconfig('eslint')); + + template('.eslintignore', join(__dirname, '../templates/eslint/eslintignore')).apply().save(); + + json('.vscode/settings.json') + .merge({ + 'editor.codeActionsOnSave': { 'source.fixAll.eslint': true }, + 'eslint.alwaysShowStatus': true, + }) + .save(); + + install(['eslint']); + + packageJson() + .setScript('lint:js', 'eslint . --cache --ext .js,.jsx,.ts,.tsx') + .setScript('lint:js:fix', 'eslint . --cache --ext .js,.jsx,.ts,.tsx --fix') + .save(); + + if (hasLintStaged) { + packageJson() + .merge({ + 'lint-staged': { + '**/*.{js,jsx,ts,tsx}': 'eslint', + }, + }) + .save(); + } +}; + +task.description = 'Add eslint'; +module.exports = task; diff --git a/templates/eslint/eslintignore b/templates/eslint/eslintignore new file mode 100644 index 0000000..1521c8b --- /dev/null +++ b/templates/eslint/eslintignore @@ -0,0 +1 @@ +dist