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

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

今天,我们来介绍一个名为 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. JDBC【4】-- jdbc预编译与拼接sql对比

    在jdbc中,有三种方式执行sql,分别是使用Statement(sql拼接),PreparedStatement(预编译),还有一种CallableStatement(存储过程),在这里我就不介绍C ...

  2. 2024年值得推荐的6款 Vue 后台管理系统模板,开源且免费!

    前言 在现今的软件开发领域,Vue.js凭借其高效.灵活和易于上手的特性,成为了前端开发的热门选择.对于需要快速搭建企业级后台管理系统的开发者而言,使用现成的Vue后台管理系统模板无疑是一个明智之举. ...

  3. MySQL底层概述—7.优化原则及慢查询

    大纲 1.Explain概述 2.Explain详解 3.索引优化数据准备 4.索引优化原则详解 5.慢查询设置与测试 6.慢查询SQL优化思路 1.Explain概述 使用Explain关键字可以模 ...

  4. 基于.NetCore开发博客项目 StarBlog - (32) 第一期完结

    前言 本文记录一下 StarBlog 项目的当前状态与接下来 v2 版本的开发规划. StarBlog 项目从 2022 年开始至今已经 2 年多了,本来早就该给第一期做个小结的,但这种博客类型的项目 ...

  5. springboot 参数注解 注入参数

    什么时注解参数 说明 我们在 使用spring mvc 的时候会使用这样的注解 @ResponseBody 这样,spring mvc 会将 客户端传来的数据,自动构建成 相应类型的对象. 有些情况下 ...

  6. CSS 变量与运算

    1.变量 变量声明:变量名使用 "--" 为前缀,且区分大小写 /* 全局变量 */ :root{ --bgColor: red; } /* 布局变量 */ p{ --bgColo ...

  7. opencv+Linux源码编译安装及引用

    (一)下载 opencv下载地址:https://opencv.org/releases/ opencv_contrib下载地址:https://github.com/opencv/opencv_co ...

  8. docker容器内使用sudo 报错bash: sudo: command not found

    解决办法: 先查看linux系统版本: cat /proc/version 1.RedHat系主要有RedHat,Fedora,CentOs等: RedHat系列的包管理工具是yum,执行 yum i ...

  9. Qt项目升级到Qt6吐血经验总结

    Qt的版本发布越来越频繁,Qt6发布已经有一段时间了,越来越多的人咨询之前的代码是否可以增加对Qt6的支持,包括开源的项目QWidgetDemo(一年时间超过2.6K star),近期百忙之中,对所有 ...

  10. Qt编写安防视频监控系统38-onvif校时

    一.前言 在视频监控系统中,对摄像机进行时间设置也是很有必要的,这样就和服务器或者软件这边统一了时间,一般在摄像机的画面上可以设置OSD标识当前时间,这样存储到视频文件中回放的时候,也能和本地的时间一 ...