@iyowei/create-esm
Version:
这是一个命令行工具,给到 ESM 源码文件路径后,自动创建一个项目、打包、发布,确保一个指令即可在项目中安装使用,进而支持跨项目使用。
95 lines (82 loc) • 2.16 kB
JavaScript
import taskCreateGithubProject from './taskCreateGithubProject.js';
import taskCreateNpmPackage from './taskCreateNpmPackage.js';
import taskCopy from './taskCopy.js';
import taskPushCode from './taskPushCode.js';
import taskCreateChangelog from './taskCreateChangelog.js';
import taskPublish from './taskPublish.js';
export const TASK_ALIAS_REPO = 'repo';
export const TASK_ALIAS_NPM = 'npm';
export const TASK_ALIAS_COPY = 'copy';
export const TASK_ALIAS_PUSH = 'push';
export const TASK_ALIAS_CHANGELOG = 'changelog';
export const TASK_ALIAS_PUBLISH = 'publish';
export const TASKS = [
TASK_ALIAS_REPO,
TASK_ALIAS_NPM,
TASK_ALIAS_COPY,
TASK_ALIAS_PUSH,
TASK_ALIAS_CHANGELOG,
TASK_ALIAS_PUBLISH,
];
export const TASK_MODS = [
{
excute: taskCreateGithubProject.excute,
name: taskCreateGithubProject.name,
alias: TASK_ALIAS_REPO,
},
{
excute: taskCreateNpmPackage.excute,
name: taskCreateNpmPackage.name,
alias: TASK_ALIAS_NPM,
},
{
excute: taskCopy.excute,
name: taskCopy.name,
alias: TASK_ALIAS_COPY,
},
{
excute: taskPushCode.excute,
name: taskPushCode.name,
alias: TASK_ALIAS_PUSH,
},
{
excute: taskCreateChangelog.excute,
name: taskCreateChangelog.name,
alias: TASK_ALIAS_CHANGELOG,
},
{
excute: taskPublish.excute,
name: taskPublish.name,
alias: TASK_ALIAS_PUBLISH,
},
];
export function getTasksList(breaker) {
const BREAKPOINT_INDEX = TASKS.indexOf(breaker);
if (BREAKPOINT_INDEX !== -1) {
// BREAKPOINT 有效
if (BREAKPOINT_INDEX === 0) {
// 第一个
return TASKS.slice(0, 1);
}
if (BREAKPOINT_INDEX === TASKS.length - 1) {
// 最后一个
return TASKS;
}
// 中间
return TASKS.slice(0, BREAKPOINT_INDEX + 1);
}
// BREAKPOINT 无效
return TASKS;
}
export default function getTasks(breaker) {
const LIST = getTasksList(breaker);
const FILTERED = TASK_MODS.filter((cur) => LIST.includes(cur.alias)).map(
(cur) => ({
title: cur.name,
task: async (ctx, task) => {
await cur.excute({ ctx, task });
},
}),
);
return FILTERED;
}