wcli
一个通过插件化的形式支持自定义开发打包推送的全局cli工具
安装
npm install @carrotwu/wcli --global
or
yarn global add @carrotwu/wcli
使用
- 请先确保项目根目录已经有wcliconfig.json文件,wcli命令的执行依托于该配置。
- 通过
wcli plugin install XXX
安装相应的plugin插件。 - 执行wcli提供的
dev
,publish
,build
等指令。
init命令
初始化模命令,适用于生成新的wcliconfig.json文件或者创建新的react后者vue项目模板。
wcli init (wj or wcliconfig)
在当前目录下新创建一个wcliconfig.json文件或者重置初始化当前目录逇wcliconfig.json文件
plugin指令
wcli plugin install
插件的安装支持两种方式,一种是github
或者gitlab
的ur地址,一种是通过npm包名的形式进行安装。插件会自动安装在项目根目录的plugins
目录下,插件安装完成之后会自动执行install
命令
// 通过npm的方式安装插件
wcli plugin install XXX-plugin -n
// 通过github或者gitlab的ssh或者https克隆地址下载插件(连接上带.git的)
wcli plugin install git@gitlab.xxx.com:xxx.git
// 或者
wcli plugin install https://gitlab.xxx.com:xxx.git
wcli plugin init
当你需要编写一个插件时,可以通过wcli plugin init
初始化一个插件目录模板。插件目录下会默认初始化四个文件。
-
dev.js: 执行
wcli dev
命令时执行的文件。 -
build.js: 执行
wcli build
命令时执行的文件。 -
publish.js: 执行
wcli publish
命令时执行的文件。 -
custom.js: 执行
wcli custom
命令时执行的文件。 - package.json: 初始化的插件package.json文件。
对于前三个文件的导出函数,会把一些可能使用到的参数变量或者wcli提供的一些通用方法通过context
参数注入。具体context
类型定义如下:
interface Context {
config: {
// 是否处于debug模式
isDebug: boolean;
// 项目根目录下的wcliconfig.json文件
wcliConfigJson: WCliConfigJson;
// 初始化publish命令时 用户所填的推送项目ssh token
token?: string;
// publish命令时 用户输入的commitMessage
publishCommitMsg: string;
};
paths: {
// 当前用户执行wcli命令的路径
currentBinPath: string;
};
utils: {
// 获取项目目录文件的通用方法
getCurrentBinFilePath: (...paths: string[]) => string;
// 默认提供的使用axios推送文件到gitlab的方法(只支持gitlab)
publishFileWithGitlabCommit: typeof publishFileWithGitlabCommit;
// 使用git命令推送文件的方法(支持github gitlab)
publishFileWithGit: typeof publishFileWithGit;
// 一些输出控制台新的方法(success warn loading error 等)
logTools: typeof logTools;
};
toolsModules: {
// 交互性的工具库 具体用法可以参考 https://github.com/SBoudrias/Inquirer.js/
prompt: PromptModule;
// axios
axios: AxiosStatic;
// fs-extra
fse: typeof fse;
};
}
一些额外的命令
-
wcli plugin list
: 表格展示已安装过得plugin列表。 -
wcli plugin remove XXX
: 删除具体某个插件。 -
wcli plugin upgrade
: 更新插件(todo 暂时是通过插件重新安装的方法更新) -
wcli plugin link XXX
: 跟npm link相似,用于本地插件开发时的索引指向。用于本地插件的开发以及本地插件的使用
wcli dev
执行插件目录下的dev.js
文件,在当前目录下可以手动启动一个webpack server服务。可以通过Inquirer
让用户选择一些前置性的参数如(开发环境,代理地址,需要开发的路由模块等)个性化的启动开发模式。
在dev.js
中您可以使用一些框架库如vue-cli
create-react-app
字典的script命令,也可以在dev.js
中自搭建一个webapck的server进行开发。
wcli build
跟wcli dev同理。可以自由定制项目打包时的环境以及参数等。
wcli custom [commands]...
允许插件编写者自定义wcli custom xxx
命令的编写.