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

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

今天,我们来介绍一个名为 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文件,它类似于 Make 的 Makefile,用于定义任务和任务之间的依赖关系。

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

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

2.1. 定义任务

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

hello:
echo "hello JUST"

运行任务时,只需在终端中输入 just hello,just 就会执行 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. 一图一知之python3数据类型

    记录python数据类型和相关的一些知识点

  2. 【Amadeus原创】word图片隐藏在文字里了的终极解决办法

    终极解决方案: 点击该图片,然后,选择正文,即可.

  3. [.NET Blog] .NET Aspire 测试入门

    https://devblogs.microsoft.com/dotnet/getting-started-with-testing-and-dotnet-aspire/ 自动化测试是软件开发的重要一 ...

  4. 【前端】【探究】HTML - input类型为file时如何实现自定义文本以更好的美化

    想到英语四级考了两次都没过,我觉得要多使用英文,所以本文使用英文书写. 本文讲述了遇到的问题,解决的思路,并讲述了解决方案,也许对你会有帮助. 目录 Problem description Solut ...

  5. Qt编写机器码秘钥控制/日期防篡改/离线使用/硬件标识/运行时间/数量控制/批量更新秘钥

    一.前言说明 搞软件开发一直追求精益求精的目标,从第一版的秘钥生成器到今天这个版本,经历了十年的时间,最初的版本做的非常简陋,就是搞了个异或加密,控制运行时间,后面又增加设备数量的控制,然后就是到期时 ...

  6. vue.js中vue.config.js的配置说明

    如果你的项目没有vue.config.js,请在根目录新建一个. vue.config.js里面的代码如下: module.exports = { /** 区分打包环境与开发环境 * process. ...

  7. React 应用的 Nginx 缓存控制

    典型 React 应用面临的缓存问题,可通过 Nginx 配置进行解决 通用部署 构建应用后,只需使用 Nginx 指向静态文件即可 server { listen 80; root /PATH/TO ...

  8. 百度统一socket长连接组件从0到1的技术实践

    本文由百度消息中台团队分享,引用自百度Geek说,原题"百度iOS端长连接组件建设及应用实践",为了帮助理解,本文有修订和改动. 1.引言 在过去的十年里,移动端互联网技术飞速发展 ...

  9. 基于Netty,从零开发IM(四):编码实践篇(系统优化)

    本文由作者"大白菜"分享,有较多修订和改动.注意:本系列是给IM初学者的文章,IM老油条们还望海涵,勿喷! 1.引言 前两篇<编码实践篇(单聊功能)>.<编码实践 ...

  10. 2022 年数据科学研究综述:重点介绍 ML、DL、NLP 等

    2022 年数据科学研究综述:重点介绍 ML.DL.NLP 等 当我们在 2022 年底临近时,我对许多著名研究小组完成的所有惊人工作感到振奋,他们将 AI.机器学习.深度学习和 NLP 的状态扩展到 ...