diff --git a/README.md b/README.md index 3a2488d..29588c8 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # @eslint/create-config + Utility to create ESLint config files ## Usage @@ -15,4 +16,21 @@ npm init @eslint/config ```bash # use npx npx @eslint/create-config -``` \ No newline at end of file +``` + +If you want to use the specified shared configs: + +```bash +# use `eslint-config-semistandard` shared config +npm init @eslint/config --config semistandard +# or (`eslint-config` prefix is optional) +npm init @eslint/config --config eslint-config-semistandard +``` + +The `--config` flag also supports passing in arrays: + +```bash +npm init @eslint/config --config semistandard,standard +# or +npm init @eslint/config --config semistandard --config standard +``` diff --git a/lib/init/config-initializer.js b/lib/init/config-initializer.js index 8219ca6..c4061a6 100644 --- a/lib/init/config-initializer.js +++ b/lib/init/config-initializer.js @@ -16,6 +16,7 @@ import { Legacy } from "@eslint/eslintrc"; import { info } from "../shared/logging.js"; import * as ConfigFile from "./config-file.js"; import * as npmUtils from "./npm-utils.js"; +import mri from "mri"; const { ConfigOps, naming, ModuleResolver } = Legacy; @@ -571,6 +572,17 @@ function promptUser() { * @returns {void} */ function initializeConfig() { + const argv = mri(process.argv.slice(2)); + + if (argv.config) { + const config = { + extends: typeof argv.config === "string" ? argv.config.split(",") : argv.config + }; + const modules = getModulesList(config); + + return askInstallModules(modules).then(() => writeFile(config, "JavaScript")); + } + return promptUser(); } diff --git a/package.json b/package.json index 399f44e..987eb19 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,7 @@ "enquirer": "^2.3.5", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", + "mri": "^1.2.0", "semver": "^7.2.1" }, "devDependencies": {