ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Just及Justfile:简介、实战

Just及Justfile:简介、实战 概述官网Rust实现、开源GitHub36K Star851 Fork跨平台、轻量级命令行工具类似于传统Make工具提供一种简单高效的方式来管理项目任务不是构建系统。中文文档。Make是给C项目做增量编译用的其核心逻辑是比对文件时间戳决定哪些东西需要重新构建。但绝大多数团队用于跑测试、部署、清理、启动开发服务器。每次都得写.PHONY声明。特性错误信息清晰具体支持命令行参数和环境变量自动补全功能无需声明.PHONY目标可从项目任意子目录调用不用切到根目录优势避免Make的up to date问题更友好的错误信息内置函数和环境变量支持更简洁的变量系统无需声明伪目标函数内置函数函数描述arch()指令集结构os()操作系统os_family()操作系统系列env_var(key)获取名称为key的环境变量如果不存在则终止env_var_or_default(key, default)获取名称为key的环境变量如果不存在则返回defaultinvocation_directory()获取just被调用时当前目录所对应的绝对路径justfile()取得当前justfile的路径justfile_directory()取得当前justfile文件父目录的路径just_executable()just可执行文件的绝对路径quote(s)用单引号包裹字符串并转义内部单引号replace(s, from, to)替换字符串中的所有匹配项replace_regex(s, regex, repl)使用正则表达式替换字符串trim(s)移除首尾空白字符trim_end(s)移除尾部空白字符trim_end_match(s, substr)移除匹配的后缀trim_end_matches(s, substr)重复移除匹配的后缀trim_start(s)移除首部空白字符trim_start_match(s, substr)移除匹配的前缀trim_start_matches(s, substr)重复移除匹配的前缀capitalize(s)首字母大写其余小写kebabcase(s)转换为kebab-caselowercamelcase(s)转换为lowerCamelCaselowercase(s)转换为全小写shoutykebabcase(s)转换为SHOUTY-KEBAB-CASEshoutysnakecase(s)转换为SHOUTY_SNAKE_CASEsnakecase(s)转换为snake_casetitlecase(s)转换为Title Caseuppercamelcase(s)转换为UpperCamelCaseuppercase(s)转换为全大写absolute_path(path)将相对路径转为绝对路径extension(path)获取文件扩展名file_name(path)获取文件名含扩展名file_stem(path)获取文件名不含扩展名parent_directory(path)获取父目录路径without_extension(path)获取不含扩展名的路径clean(path)简化路径移除冗余部分join(a, b…)拼接路径自动处理分隔符path_exists(path)检查路径是否存在error(message)终止执行并显示错误消息sha256(string)计算字符串的SHA-256哈希值十六进制sha256_file(path)计算文件的SHA-256哈希值十六进制uuid()生成随机UUID解读arch()输出aarch64、arm、asmjs、hexagon、mips、msp430、powerpc、powerpc64、s390x、sparc、wasm32、x86、x86_64、xcoreos()输出android、bitrig、dragonfly、emscripten、freebsd、haiku、ios、linux、macos、netbsd、openbsd、solaris、和windowsos_family()输出unix、windows语法或叫功能包括变量通过:进行赋值并在配方中通过{{变量名}}方式进行引用可在命令行传参覆盖前缀不显示命令本身只显示输出加载.env文件在justfile顶部加上set dotenv-load依赖机制在配方名后面列出依赖的配方就行。install: npm ci build: install npm run build test: build npm test运行just test时Just 会先跑install再跑build最后跑test。依赖关系清晰执行顺序自动解析。可用--no-deps跳过依赖。支持配方带参数deploy target: ./scripts/deploy.sh {{target}} # 参数设置默认值 build moderelease: cargo build --{{mode}}执行命令just deploy staging just deploy production支持Shebang配方count-files:#!/usr/bin/env python3importos print(len(os.listdir(.)))Just会把配方内容存成临时文件然后用Shebang指定的解释器去跑。可通过反引号来执行系统命令条件判断build_type :ifos()windows{exe}else{bin}arch :ifarch()x86_64{amd64}elseifarch()aarch64{arm64}else{error(Unsupported architecture)}# 反引号current_branch :gitbranch --show-currentJustfile语法受make启发特性JustMake语法简洁直观较为复杂跨平台原生支持需要兼容层错误处理清晰详细有时晦涩变量作用域统一简单多种类型自动补全完善支持有限.PHONY声明不需要需要环境变量内置支持需要额外处理现代功能条件、函数等有限实战安装brewinstalljust wingetinstall--idCasey.Justcargoinstalljust示例# 注释build:echoBuilding project...cargobuild test:echoRunning tests...cargotest命令行使用示例# 列出所有配方以_开头的配方会被隐藏just--listjust--list--unsortedjust--summary# 查看某个配方的具体内容just--showrecipe# 用交互式选择器选配方just--choose用于Java项目# 构建应用build: ./mvnw clean package# 构建 Docker 镜像依赖 build会先执行 builddocker: builddockerbuild-tmy-app:latest.dockerpush my-app:latest# 本地运行依赖 buildrun: build ./mvnw spring-boot:run -Dspring-boot.run.profileslocal用于Node.js项目install:npmci build:installnpmrun build test: buildnpmtest生态vim-just插件可为vim提供justfile语法高亮显示just-mode可为justfile提供语法高亮和自动缩进
返回列表