heyoo
is a command-line tool written in typescript, which supports the expansion of its own or project functions
in the form of plugins
or packs
.
All plugins
and packs
must be es module, so your node.js version must conform to ^12.20.0 || ^14.13.1 || >=16.0.0.
Read this in other languages: English | 简体中文
pnpm add heyoo -g
# or
npm i heyoo -g
# or
yarn add heyoo -g
Create a new plugins or packs project based on the selected preset template.
hey create
# or
# type is one of "plugins" and "packs"
hey create [type]
Link local plugins
or packs
to heyoo
.
hey link
# or
# type is one of "plugins" and "packs"
hey link [type]
For plugins
, there can only be one link and install of the plugins, and they will overwrite each other when
the link and install commands are executed.
For packs
, the priority of the linked package is higher than the package in node_modules.
Unlink the plugins
or packs
under the current path, and also can remove the target link of the specified name.
# unlink target by current path
hey unlink
# unlink target by its name
hey unlink [name]
Install the plugins. Supports the installation of plugins published to npm registry, GitHub or GitLab.
hey install [options] <plugins>
# npm registry example:
hey install @heyoo/plugins-js-template
# GitHub repo example:
hey install --git hey-yoo/heyoo-template#plugins-js-template
You can check this document to learn more about how to install GitHub or GitLab plugins.
Uninstall the installed plugins.
hey uninstall <plugins>
Display the local plugins
and packs
.
hey list
If there is a configuration file hey.config in the current path and there is a specified target packs
,
when the packs can be found then will execute the script(function).
hey run [script]
open the setting file setting.json.
hey setting
The plugins expand the function of heyoo
by registering new commands on heyoo
.
The package.json in its directory must have an exports attribute, and its value must be a string:
{
"type": "module",
"exports": "./bin/index.js"
}
The file specified by the exports attribute must export the default command array (export default []). The following is its type definition:
interface command {
command: string;
action: (...args: any[]) => void | Promise<void>;
option?: string[][];
requiredOption?: string[][];
argument?: string[][];
description?: string;
}
export default [] as command[];
You can read this document to learn more about the interface command attribute.
Packs are used to provide extended functions for specific projects(where the configuration file hey.config exists).
The package.json in its directory must have an exports attribute, and its value must be an object like this:
{
"type": "module",
"exports": {
"./foo": "./bin/foo.js",
"./bar": "./bin/bar.js"
}
}
You can read Package entry points to learn more about the exports' property.
The file specified by the exports attribute must export the default function (export default function () {}).
The configuration file supports js and json formats. If it is in js format, it must be exported as es module.
And there must be a packs attribute, which is used to specify packs
,
and its value must be consistent with the value of the name attribute in the package.json in the packs
.
The run command will first check whether there is a link to the packs
locally, otherwise it will search from
node_modules under the current path.
export default {
packs: '@heyoo/plugins-js-template',
};
The setting file setting.json will be generated by heyoo
when used for the first time:
{
// packageManager's value is one fo pnpm, npm, yarn
"packageManager": "",
"template": {
"plugins": [],
"packs": []
}
}
The value of the template:
{
// template name
"title": "",
// template type (Currently only git is supported, npm will be supported in the future)
"type": "git",
// When type is git, you need to specify the git repo
"repo": ""
}
You can read this document to learn more about template repo attributes.
Currently heyoo
has some preset templates, which can be viewed here.