在软件开发过程中,高效管理项目命令是提升开发效率的关键,

它们可以帮助我们自动化重复的任务,简化项目管理流程,提高效率。

今天,我们来介绍一个名为 just 的任务运行器。

它由 Casey 发起,用 Rust 编写,旨在提供一个简单、高效且用户友好的任务管理解决方案。

just 的设计理念是让任务运行变得轻量级且易于上手,同时避免了传统工具如 Make 的复杂性。

1. 安装

just 提供了多种安装方式,几乎涵盖了所有主流操作系统。

以下是几种常见的安装方法:

1.1. 使用 Cargo 安装

如果你已经安装了 Rust,可以通过 Cargo 安装 just:

cargo install just

1.2. 使用 Homebrew

macOS 上,可以通过 Homebrew 安装 just

brew install just

1.3. 使用 Scoop

对于 Windows 用户,Scoop 是一个方便的包管理器,可以通过以下命令安装 just

scoop install just

1.4. 使用预制二进制文件

如果你不想使用包管理器,也可以直接下载 just 的预制二进制文件。

访问 just 的 GitHub Releases 页面,选择适合你操作系统的版本并下载。

安装完成后,运行以下命令以确保 just 已正确安装:

just --version

如果一切正常,你将看到 just 的版本信息。

2. 核心语法

just的核心是justfile文件,它类似于 MakeMakefile,用于定义任务和任务之间的依赖关系。

just的语法简洁明了,易于上手。

下面总结了其语法中常用的部分,如果熟悉make工具的话,看着会觉得很熟悉。

2.1. 定义任务

justfile中,任务以名称开头,后跟冒号和任务的具体命令。

hello:
echo "hello JUST"

运行任务时,只需在终端中输入 just hellojust 就会执行 hello 这个任务。

2.2. 任务依赖

just 支持任务之间的依赖关系,可以通过在任务名称后添加依赖任务来实现。

build:
echo "this is BUILD command" release: build
echo "start to RELEASE... ..."

release任务依赖build任务,所以执行release任务是会自动先执行build任务。

2.3. 参数和变量

just支持任务参数和变量,这使得任务更加灵活。

build version:
echo "BUILD for version: {{version}}"

build任务添加一个参数version,这样可以指定要编译的版本。

2.4. 条件表达式

just支持条件表达式,可以根据条件动态执行任务。

build version:
echo {{ if version == "latest" { "使用【最新】的编译方式" } else { "使用【旧】的编译方式" } }}

根据version参数,选择不同的编译方式。

2.5. 静默模式

默认情况下,just会在执行命令前打印命令内容。

如果希望隐藏这些输出,可以在命令前加上@符号,比如上面的示例中,每个echo命令本身都被输出了出来。

比如在第一个示例中,我们在echo前面加一个@符号。

hello:
@echo "hello JUST"

这样就只输出内容,不会将命令本身输出出来了。

2.6. 错误处理

just会在命令失败时停止执行任务,这有助于避免错误的传播。

hello:
echo "命令1"
echo1 "错误的命令"
echo "命令2"

echo1 这个命令是不存在的,执行到这一步的时候出现了错误,直接退出,不会执行下面的 **命令2 **了。

3. 与make的比较

just最接近的工具就是make,但它们在设计理念和实现上有显著的区别。

just make
语法简洁性 简洁明了,易于理解和使用 较为复杂,尤其是对于新手来说,可能会感到困惑
跨平台支持 Rust 编写的,具有良好的跨平台支持 主要用于 Unix-like 系统,虽然也有 Windows 版本(如 MinGW),但使用起来可能会有一些兼容性问题
任务依赖管理 直观和灵活。它允许任务依赖于其他任务,并且可以动态地传递参数 基于文件的时间戳,对于复杂的任务依赖关系,可能需要更多的配置
错误处理 自动处理错误,如果某个命令失败,任务会立即停止执行 默认会继续执行后续任务,除非显式地指定stop
输出友好性 输出友好,支持颜色化输出,并且在错误处理上更加用户友好 输出较为简单,可能需要额外的工具来美化输出

4. 总结

just 是一个现代的任务运行器,它以简洁的语法、强大的功能和良好的跨平台支持,为开发者提供了一个高效的项目管理工具。

它不仅适用于构建和测试任务,还可以用于初始化开发环境、创建快捷命令等多种场景。

如果你正在寻找一个替代 make 的工具,just 绝对值得一试。

用 just 简化项目命令管理的更多相关文章

  1. Android 命令管理项目

    今天介绍一下Android怎么用命令管理项目,用命令管理Android项目需要用到Android命令,首先介绍一下用Android命令创建新项目,打开命令提示窗口,导航到Android SDK 的to ...

  2. 规范化的软件项目演进管理--从 Github 使用说起

    规范化的软件项目演进管理 从 Github 使用说起 1   前言 首先,本文的层次定位是:很基本很基础的 Github 工具的入门级应用,写给入门级的用户看的. 基本上工作过几年的人,下面描述的这些 ...

  3. Coding 初级教程(一)——用GitHub的GUI客户端对Coding的项目进行管理

    一.概述 二.Git基本概念 1.有关存储的四个概念 2.分支(branch) 三.项目管理实战操作 1.安装 GHfW(GitHub for Windows) 2.在Coding上新建一个项目(新建 ...

  4. Linuxc - Makefile完成项目的管理。

    Makefile完成项目的管理. root@jiqing-virtual-machine:~/cspace/les2# ls main.c Makefile max.c max.h min.c min ...

  5. PMP:11.项目采购管理

    项目采购管理包括从项目团队外部采购或获取所需产品.服务或成果的各个过程.  项目采购管理包括编制和管理协议所需的管理和控制过程,例如,合同.订购单.协议备忘录 (MOA),或服务水平协议 (SLA). ...

  6. 使用Visual Studio Team Services敏捷规划和项目组合管理(三)——使用Kanban板

    使用Visual Studio Team Services敏捷规划和项目组合管理(三)--使用Kanban板 1.要查看Kanban板,请单击Work>Backlogs页面上的Board 链接. ...

  7. Vue Create 创建一个新项目 命令行创建和视图创建

    Vue Create 创建一个新项目 命令行创建和视图创建 开始之前 你可以先 >>:cd desktop[将安装目录切换到桌面] >>:vue -V :Vue CLI 3.0 ...

  8. nginx高性能WEB服务器系列之二命令管理

    nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...

  9. Linux 安装tomcat及tomcat自带远程部署项目与管理

    准备: 1.Linux系统 2.已经安装好jdk 开始: 选择要安装的tomcat版本:https://archive.apache.org/dist/tomcat/ 我这里使用的是tomcat 8. ...

  10. Node项目模板管理脚手架ptm-cli开发

    目录 一.ptm-cli 使用说明 1.特点 2.安装 3.使用 1)基础帮助命令 2)添加模板/项目 3)编辑模板/项目 4)查看模板/项目 5)删除模板/项目 6)基于模板新建/初始化项目 二 p ...

随机推荐

  1. 关于xml文件解析时'&'不能被解析的问题

    Bug情况:在解析xml文件的时候,&字符解析错误 解决方式:将符号进行转义

  2. Postman 汉化教程

    Postman 汉化教程(Postman中文版) 迷恋自留地 postman官网下载地址 https://www.postman.com/downloads/ postman汉化包 https://g ...

  3. 鸿蒙应用开发从入门到入行 - 篇1:HarmonyOS介绍——带你深入理解鸿蒙特性

    鸿蒙应用开发从入门到入行 第一天 - HarmonyOS介绍 导读:在本篇文章里,您将了解到HarmonyOS是什么,以及有哪些振奋人心的特性.并且猫林老师会在本篇文章里给出结论:鸿蒙必能蚕食安卓份额 ...

  4. 使用 VS Code 徒手构建 PDF 文件

    使用 VS Code 徒手构建 PDF 文件 PDF 文件是广泛应用的页面描述文件格式,从本质上讲,文件内部的结构混合使用了文本格式描述和二进制格式描述,对于简单的文件,比如说我们今天要创建的第一个 ...

  5. 【uni-app】【02】请求域名的全局配置。

    关于uni-app的请求问题,可以访问官方文档 https://uniapp.dcloud.net.cn/api/request/request.html 值得注意的一个点就是全局配置域名的问题. 因 ...

  6. Table flags are 0 in the data dictionary but the flags in file ./ibdata1 are 0x4800!

    1.问题截图 cat /var/log/mysql/error.log 2019-01-28T09:49:57.076019Z 0 [ERROR] [FATAL] InnoDB: Table flag ...

  7. sudo: source: command not found

    在Ubuntu上配置了jdk(非root用户),要使它的配置生效,在执行 sudo source /etc/profile 的时候提示 ,sudo: source: command not found ...

  8. 国外著名交易策略:R-Breaker模型设计原理(转载)

    R-Breaker是一种短线日内交易策略,它结合了趋势和反转两种交易方式. 交易系统的基本原理如下: 1.根据前一个交易日的收盘价.最高价和最低价数据通过一定方式计算出六个价位,从大到小依次为:突破买 ...

  9. Python 元类(Meta Class):解密 Python 面向对象编程的幕后推手

    在 Python 编程中,我们每天都在和类打交道,但是你是否也和我一样想过:类本身是什么?是谁创建了类?元类(Meta Class)就是用来创建类的"类".今天让我们一起深入理解这 ...

  10. SpringBoot进阶教程(八十四)spring-retry

    在日常的一些场景中, 很多需要进行重试的操作.而spring-retry是spring提供的一个基于spring的重试框架,某些场景需要对一些异常情况下的方法进行重试就会用到spring-retry. ...