pnodev / jim-core
命令行任务运行器
README
jim
jim 是一个高度可扩展的任务运行器。
概念
jim 由两部分组成:cli 命令和 jim-core
包。
jim-cli
jim 命令只是一个包装器,使得 jim
命令可以在全局范围内使用。当你运行一个 jim 命令时,它会在当前工作目录中查找 jim-runtime,并将命令委托给它。
jim-core (此包)
jim-runtime 可以通过 Composer 或 npm 进行安装。一旦你在项目中安装了该包,你就可以执行 jim 命令。
jim-core 和 jim-scripts
jim-core 包自带了一组预安装的命令。jim 的真正力量在于 jim-scripts 的概念。
你可以编写自己的命令作为 node-或 shell-scripts,并将它们提供给 jim。
安装
jim-cli
你可以通过在仓库内执行 install.sh
脚本来安装 jim 命令。你只需要这样做一次。
jim-core
根据你的项目,你可以使用以下命令安装 jim-core
注意 建议将 jim-core 作为 dev-dependency 安装
Node / npm
npm install -D @pnodev/jim-core
PHP / Composer
composer require --dev pnodev/jim-core
配置/使用
你可以通过 .jimrc
文件提供项目特定的配置
NODE_VERSION=20
DIR_JIM_SCRIPTS=./jim-scripts
变量 | 描述 |
---|---|
NODE_VERSION | 如果你设置了 node 版本,jim 将确保在执行 node 命令之前通过 nvm 设置正确的版本。这在你需要在需要不同 node 版本的项目之间频繁切换时特别有用。 |
DIR_JIM_SCRIPTS | 使指定位置的 node-或 shell-scripts 可用作 jim-命令。 |
你可以在其中添加更多项目特定的变量。所有在 .jimrc
中定义的变量都将暴露给命令,因此你可以在脚本中使用它们。例如,你可以添加变量来定义你的 JavaScript 文件的路径,并在 esbuild-task 中使用它。
编写自定义命令
自定义命令可以编写为 shell 脚本。jim-runtime 为你提供了以下辅助器来以一致的方式编写你的脚本
环境变量
以下环境变量将可用于你的命令
变量 | 描述 |
---|---|
DIR_JIM_SCRIPTS | 你的 jim-scripts 文件夹的路径 |
DIR_CORE | 你的 jim-core 包的路径 |
注意 此外,所有你在
.jimrc
中定义的变量也将可用。
实用函数
通过导入以下脚本,你可以访问一系列实用函数
source "${DIR_CORE}/utils.sh"
颜色
为了生成更令人愉悦的终端输出,你可以使用以下变量来格式化你的日志
变量 | 描述 |
---|---|
COLOR_RESET | 重置所有格式化 |
COLOR_YELLOW | 将颜色设置为黄色 |
COLOR_BLUE | 将颜色设置为蓝色 |
COLOR_GREEN | 将颜色设置为绿色 |
COLOR_RED | 将颜色设置为红色 |
COLOR_CYAN | 将颜色设置为青色 |
COLOR_DIMMED | 降低输出颜色 |
COLOR_BOLD | 格式化输出加粗 |
_log
_log
函数提供了一种一致输出行为。建议对所有日志使用它。它接受输出字符串作为第一个参数,以及一个可选的第二个参数来设置输出颜色。
_log "This is a yellow string" "${COLOR_YELLOW}"
_ask
_ask
函数显示一个提示,用户可以用是或否来回答。这个函数的一个良好用途是在执行可能危险的命令之前询问用户的确认。
source "${DIR_CORE}/utils.sh"
if _ask "This will overwrite the data on the deploy server, do you want to continue?"
then
_log "… Stating update" "$COLOR_YELLOW"
ddev updateDeploy
_log "✓ update finished" "$COLOR_YELLOW"
echo ""
fi
_box
_box
函数将在一个框中显示给定的字符串。
_box "I'm in a box"
┌──────────────┐
│ I'm in a box │
└──────────────┘
_invoke
_invoke
命令可用于启动另一个 jim-task 作为子任务。例如,如果你有一个应该启动 build:css
和 build:js
任务 的 build
-task,你可以这样做:
source "${DIR_CORE}/utils.sh"
setNodeVersion
_invoke build:css
_invoke build:js
_announceTaskStart
用于宣布任务开始的预格式化日志。
_announceTaskStart "Building CSS"
[jim] 🚧 Building CSS
_announceTaskEnd
用于宣布任务完成的预格式化日志。
_announceTaskEnd "CSS built in ${PATH_CSS_OUT}"
[jim] 💪 CSS built in Resources/Public/Css/main.min.css
setNodeVersion
将节点版本设置为 .jimrc
中指定的版本。如果你需要在 shell-script 命令中调用 node-script,这很有用。
source "${DIR_CORE}/utils.sh"
setNodeVersion
npm install
移除 jim-cli
如果你想要从系统中移除 jim 命令,只需在这个仓库中执行 uninstall.sh
脚本。