initx 一个脚本引擎
npx initx <something>
它只做以下几件事
- 提供方便的入口
- 收集插件
- 收集匹配器命中的执行器
- 处理可能的用户交互
- 执行!🚀
所有具体的操作,会通过插件的形式进行
我目前写了一些基本的,我个人用得到的插件,我想尽可能减少我使用一些工具(例如 git 、gpg )的复杂度
每个插件是一个 npm 库,首先可以先安装插件管理工具,这也是一个插件
npm i -g @initx-plugin/manager
可以通过这个更方便的查看、添加、移除、更新插件
插件示例
# 安装插件
npx initx plugin add git
# initx
npx initx user imba97 mail@imba97.cn
# 等于
git config --global user.name imba97
git config --global user.email mail@imba97.cn
设置 Git GPG 签名
# initx
npx initx gpg true
# 设置 GPG Key ,自动查询,如果只有一个则设置该 Key ,如果有多个则让用户选择
npx initx gpg
# 等于
git config --global commit.gpgsign true
git config --global user.signingkey 92038B3E14C0D332542FB082B851A3E43D739400
git config --global gpg.program D:/GnuPG/gpg.exe
快速复制
# 安装插件
npx initx plugin add cp
# SSH 公钥
npx initx cp ssh
# GPG 公钥
npx initx cp gpg
# 当前目录
npx initx cp cwd
插件开发
提供插件开发起步项目 initx-plugin-starter
插件主要是匹配器和执行器,通过配置的匹配器匹配用户输入内容,执行对应的操作
匹配器的写法支持很多种,以下是 @initx-plugin/git 插件的写法
export default class GitPlugin extends InitxPlugin {
matchers = {
[GitMatcher.Init]: {
// 以下三种任意一个匹配成功,都返回类型 GitMatcher.Init
matching: [
/^( https?|git):\/\/.*\.git$/,
/^(git@.*\.git)$/,
/^ssh:\/\/git@.*\.git$/
],
description: 'Initialize a new git repository'
},
[GitMatcher.User]: {
matching: 'user',
description: 'Set user name and email for git configuration'
},
// 可以写相同的 matching ,这会让用户选择,最后返回用户选择的 GitMatcher 类型
[GitMatcher.Gpg]: {
matching: 'gpg',
description: 'Enable or disable GPG signing for git commits'
},
[GitMatcher.GpgKey]: {
matching: 'gpg',
description: 'Set GPG key for git commits'
}
}
async handle({ key }: InitxContext, type: GitMatcher, ...others: string[]) {
switch (type) {
case GitMatcher.Init: {
await repositoryHandle(key, ...others)
break
}
// ...
}
}
}
不同插件指令也可重复,会让用户选择
Github:initx-collective/initx
|