用 just 简化项目命令管理
在软件开发过程中,高效管理项目命令是提升开发效率的关键,
它们可以帮助我们自动化重复的任务,简化项目管理流程,提高效率。
今天,我们来介绍一个名为 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 简化项目命令管理的更多相关文章
- Android 命令管理项目
今天介绍一下Android怎么用命令管理项目,用命令管理Android项目需要用到Android命令,首先介绍一下用Android命令创建新项目,打开命令提示窗口,导航到Android SDK 的to ...
- 规范化的软件项目演进管理--从 Github 使用说起
规范化的软件项目演进管理 从 Github 使用说起 1 前言 首先,本文的层次定位是:很基本很基础的 Github 工具的入门级应用,写给入门级的用户看的. 基本上工作过几年的人,下面描述的这些 ...
- Coding 初级教程(一)——用GitHub的GUI客户端对Coding的项目进行管理
一.概述 二.Git基本概念 1.有关存储的四个概念 2.分支(branch) 三.项目管理实战操作 1.安装 GHfW(GitHub for Windows) 2.在Coding上新建一个项目(新建 ...
- Linuxc - Makefile完成项目的管理。
Makefile完成项目的管理. root@jiqing-virtual-machine:~/cspace/les2# ls main.c Makefile max.c max.h min.c min ...
- PMP:11.项目采购管理
项目采购管理包括从项目团队外部采购或获取所需产品.服务或成果的各个过程. 项目采购管理包括编制和管理协议所需的管理和控制过程,例如,合同.订购单.协议备忘录 (MOA),或服务水平协议 (SLA). ...
- 使用Visual Studio Team Services敏捷规划和项目组合管理(三)——使用Kanban板
使用Visual Studio Team Services敏捷规划和项目组合管理(三)--使用Kanban板 1.要查看Kanban板,请单击Work>Backlogs页面上的Board 链接. ...
- Vue Create 创建一个新项目 命令行创建和视图创建
Vue Create 创建一个新项目 命令行创建和视图创建 开始之前 你可以先 >>:cd desktop[将安装目录切换到桌面] >>:vue -V :Vue CLI 3.0 ...
- nginx高性能WEB服务器系列之二命令管理
nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...
- Linux 安装tomcat及tomcat自带远程部署项目与管理
准备: 1.Linux系统 2.已经安装好jdk 开始: 选择要安装的tomcat版本:https://archive.apache.org/dist/tomcat/ 我这里使用的是tomcat 8. ...
- Node项目模板管理脚手架ptm-cli开发
目录 一.ptm-cli 使用说明 1.特点 2.安装 3.使用 1)基础帮助命令 2)添加模板/项目 3)编辑模板/项目 4)查看模板/项目 5)删除模板/项目 6)基于模板新建/初始化项目 二 p ...
随机推荐
- JDBC【4】-- jdbc预编译与拼接sql对比
在jdbc中,有三种方式执行sql,分别是使用Statement(sql拼接),PreparedStatement(预编译),还有一种CallableStatement(存储过程),在这里我就不介绍C ...
- 2024年值得推荐的6款 Vue 后台管理系统模板,开源且免费!
前言 在现今的软件开发领域,Vue.js凭借其高效.灵活和易于上手的特性,成为了前端开发的热门选择.对于需要快速搭建企业级后台管理系统的开发者而言,使用现成的Vue后台管理系统模板无疑是一个明智之举. ...
- MySQL底层概述—7.优化原则及慢查询
大纲 1.Explain概述 2.Explain详解 3.索引优化数据准备 4.索引优化原则详解 5.慢查询设置与测试 6.慢查询SQL优化思路 1.Explain概述 使用Explain关键字可以模 ...
- 基于.NetCore开发博客项目 StarBlog - (32) 第一期完结
前言 本文记录一下 StarBlog 项目的当前状态与接下来 v2 版本的开发规划. StarBlog 项目从 2022 年开始至今已经 2 年多了,本来早就该给第一期做个小结的,但这种博客类型的项目 ...
- springboot 参数注解 注入参数
什么时注解参数 说明 我们在 使用spring mvc 的时候会使用这样的注解 @ResponseBody 这样,spring mvc 会将 客户端传来的数据,自动构建成 相应类型的对象. 有些情况下 ...
- CSS 变量与运算
1.变量 变量声明:变量名使用 "--" 为前缀,且区分大小写 /* 全局变量 */ :root{ --bgColor: red; } /* 布局变量 */ p{ --bgColo ...
- opencv+Linux源码编译安装及引用
(一)下载 opencv下载地址:https://opencv.org/releases/ opencv_contrib下载地址:https://github.com/opencv/opencv_co ...
- docker容器内使用sudo 报错bash: sudo: command not found
解决办法: 先查看linux系统版本: cat /proc/version 1.RedHat系主要有RedHat,Fedora,CentOs等: RedHat系列的包管理工具是yum,执行 yum i ...
- Qt项目升级到Qt6吐血经验总结
Qt的版本发布越来越频繁,Qt6发布已经有一段时间了,越来越多的人咨询之前的代码是否可以增加对Qt6的支持,包括开源的项目QWidgetDemo(一年时间超过2.6K star),近期百忙之中,对所有 ...
- Qt编写安防视频监控系统38-onvif校时
一.前言 在视频监控系统中,对摄像机进行时间设置也是很有必要的,这样就和服务器或者软件这边统一了时间,一般在摄像机的画面上可以设置OSD标识当前时间,这样存储到视频文件中回放的时候,也能和本地的时间一 ...