UNPKG

@iyowei/create-esm

Version:

这是一个命令行工具,给到 ESM 源码文件路径后,自动创建一个项目、打包、发布,确保一个指令即可在项目中安装使用,进而支持跨项目使用。

84 lines (69 loc) 1.57 kB
import isEmpty from 'lodash/isEmpty.js'; import { rules as argsRules, ARG_BREAKPOINT, ARG_NAME, ARG_DESCRIPTION, ARG_OUTPUT, ARG_DEPENDENCIES, ARG_SSH_KEY, ARG_GITHUB_ORG, ARG_BENCHMARK, ARG_TDD, } from './args.js'; import terminateCli from '../terminateCli.js'; const DEFAULTS = new Map( Object.entries({ targets: [], [ARG_NAME]: '', pkgName: '', [ARG_DESCRIPTION]: '', pkgFiles: [], pkgExports: {}, devDependencies: [ 'eslint', 'eslint-config-prettier', 'eslint-plugin-import', 'eslint-config-airbnb-base', 'prettier', ], [ARG_DEPENDENCIES]: [], namespace: '', generateReadme: false, [ARG_TDD]: false, [ARG_BENCHMARK]: false, // 默认在个人 Github 账户下创建项目 githubOrgNameSameWithNpmOrg: false, [ARG_GITHUB_ORG]: '', [ARG_OUTPUT]: '', newProjectPath: '', [ARG_SSH_KEY]: '', copiers: [], prints: {}, gitignore: {}, [ARG_BREAKPOINT]: '', }), ); const KEY_STORE = Symbol('key store'); export default { [KEY_STORE]: DEFAULTS, set(key, value) { const rule = argsRules[key]; if (!isEmpty(rule) && !isEmpty(rule.validate)) { const validateResult = rule.validate(value); if (!validateResult.ok) { terminateCli(validateResult.message); } else { this[KEY_STORE].set(key, value); } } else { this[KEY_STORE].set(key, value); } }, get(key) { return this[KEY_STORE].get(key); }, getAll() { return this[KEY_STORE]; }, };