0.0.11 • Published 1 year ago

konos v0.0.11

Weekly downloads
-
License
-
Repository
github
Last release
1 year ago

konos

安装

pnpm i konos

使用

比如基于 konos 构建一个自己的 cli : xiaohuoni

1、增加配置 package.json

{
  "name": "xiaohuoni",
  "bin": {
    "xiaohuoni": "bin/xiaohuoni.js"
  },
  "files": [
    "dist",
    "bin",
    "templates"
  ],
  "dependencies": {
    "@umijs/utils": "^4.0.12",
    "konos": "^0.0.2",
  },
}

2、新建 bin/xiaohuoni.js

#!/usr/bin/env node
const { join } = require('path');

const { sync } = require('@umijs/utils/compiled/cross-spawn');
const chalk = require('@umijs/utils/compiled/chalk').default;
const argv = process.argv.slice(2);

process.env.KONO_PRESET = join(__dirname, `../src/preset`);

const spawn = sync(
  'konos',
  [...argv],
  {
    env: process.env,
    cwd: process.cwd(),
    stdio: 'inherit',
    shell: true
  }
);

if (spawn.status !== 0) {
  console.log(chalk.red(`kono-scripts run fail`));
  process.exit(1);
}

3、编写插件集

import { logger } from '@umijs/utils';
import { IApi } from './types';

export default (api: IApi) => {
  api.onStart(() => {
    logger.ready('welcome to xiaohuoni world!');
  });
  return {
    plugins: [
      // inits
      require.resolve('./inits/umiplugin'),
    ].filter(Boolean),
  };
};

4、编写插件

import { prompts } from '@umijs/utils';
import { join } from 'path';
import { IApi, InitType } from '../types';

export default (api: IApi) => {
  api.describe({
    key: 'inits:umiplugin',
  });

  api.registerInit({
    key: 'umiplugin',
    name: 'Umi Plugin',
    description: '初始化 Umi 插件',
    template: join(__dirname, '..', '..', 'templates', 'plugin'),
    type: InitType.init,
    questions: [
      {
        name: 'name',
        type: 'text',
        message: `What's the plugin name?`,
      },
      {
        name: 'description',
        type: 'text',
        message: `What's your plugin used for?`,
      },
      {
        name: 'mail',
        type: 'text',
        message: `What's your email?`,
      },
      {
        name: 'author',
        type: 'text',
        message: `What's your name?`,
      },
      {
        name: 'org',
        type: 'text',
        message: `Which organization is your plugin stored under github?`,
      },
      {
        type: 'select',
        name: 'registry',
        message: 'Pick Bpm Registry',
        choices: [
          {
            title: 'npm',
            value: 'https://registry.npmjs.org/',
            selected: true,
          },
          { title: 'taobao', value: 'https://registry.npmmirror.com' },
        ],
      },
    ] as prompts.PromptObject[],
  });
};

5、创建对应的模版文件

新建文件夹 templates/plugin 下面放上你的模版

6、执行 npx xiaohuoni init

发包之后,执行命令不需要 npx

npx xiaohuoni init
ready - welcome to xiaohuoni world!
? Pick init type › - Use arrow-keys. Return to submit.
❯   Umi Plugin -- 初始化 Umi 插件
0.0.9-bate.2

1 year ago

0.0.10

1 year ago

0.0.11

1 year ago

0.0.9-bate.1

1 year ago

0.0.9

1 year ago

0.0.8

1 year ago

0.0.4

2 years ago

0.0.7

1 year ago

0.0.6

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago