35 个版本 (18 个重大更改)
0.19.6 | 2023年12月12日 |
---|---|
0.19.4 | 2021年3月31日 |
0.19.2 | 2020年10月24日 |
0.19.0 | 2020年7月24日 |
#4 in #package-json
149 个月下载量
345KB
2.5K SLoC
Žinoma
使您的构建流程增量化
为什么还需要另一个构建工具?
复杂的软件项目通常结合了多种技术,每种技术都配备了特定的构建工具。这类项目上的开发工作流程(例如,检查代码有效性、部署新版本)需要执行多个命令,而这些命令需要以协调一致的方式执行。
手动运行这些命令容易出错,因为很容易忘记命令或者以错误的顺序运行它们。另一方面,使用一个简单的脚本来系统性地运行所有这些命令又过于缓慢。
引入 Žinoma
Žinoma 提供了一个简单的命令行,以最有效的方式执行您最常见的构建流程。
特别是,Žinoma 提供了一种机制,以增量方式运行任务。这意味着如果Žinoma 确定某个任务可以跳过,它将避免反复运行重复的任务。
它还处理任务之间的依赖关系(等待一个任务的完成再开始另一个任务),并在可能的情况下并行运行任务。
最后,Žinoma 提供了监控模式,它会等待文件系统更新,并在源文件更新时重新执行相关任务。
安装
通过 Homebrew(适用于 macOS)
先决条件
brew install fbecart/tap/zinoma
通过 APT(适用于基于 Debian 的 Linux 发行版)
curl -SsL https://fbecart.github.io/ppa/debian/KEY.gpg | sudo apt-key add -
sudo curl -SsL -o /etc/apt/sources.list.d/fbecart.list https://fbecart.github.io/ppa/debian/fbecart.list
sudo apt update
sudo apt install zinoma
通过 Cargo(适用于 Linux、Windows 或 macOS)
先决条件
cargo install zinoma
文档
构建流程的 YAML 语法 (zinoma.yml
)
为了将 Žinoma 与您的项目一起使用,您需要创建一个名为 zinoma.yml
的 Yaml 文件。
有关预期模式的完整文档可以在此页面上找到:此页面。
命令行
USAGE:
zinoma [FLAGS] [OPTIONS] [TARGETS]...
ARGS:
<TARGETS>... Targets to build
FLAGS:
--clean Start by cleaning the target outputs
-h, --help Prints help information
-v Increases message verbosity
-V, --version Prints version information
-w, --watch Enable watch mode: rebuild targets and restart services on file system changes
OPTIONS:
-p, --project <PROJECT_DIR> Directory of the project to build (in which 'zinoma.yml' is located)
附加信息
增量构建
增量构建是 Žinoma 的核心功能。它的目的是极大地加速您的开发环境,同时简化您最常见的构建流程的执行。
加快构建流程的最佳方法就是避免运行其命令。Žinoma可以帮助您以完全自动化的方式完成这项工作。
构建目标是针对资源(例如文件)进行操作的,将一些资源(即input
)转换成其他资源(即output
)。通过查看您的目标中声明的input
和output
资源,Žinoma可以判断目标是否需要重新运行,或者可以跳过。
Žinoma通过查看文件的修改时间戳和校验和来识别文件更新。这些信息存储在位于zinoma.yml
旁边的.zinoma
目录中。这个目录应在您的版本控制中忽略。
监视模式(--watch
)
Žinoma提供了一种监视模式,可以通过命令行的--watch
选项启用。
如果启用了监视模式,Žinoma将在构建流程完成后不会退出。相反,它将密切关注目标input
的路径,并在检测到文件系统更改时重新执行相关目标。
清理标志(--clean
)
此标志有助于清理您的构建环境。它将删除在您的output.paths
中指定的文件,并将重新初始化目标的增量状态。
如果单独提供,--clean
标志将清理构建流程中的所有目标。
当与目标一起提供时,--clean
标志将仅在指定的目标和它们的依赖项上运行清理。然后Žinoma将继续执行这些目标。
配置示例
zinoma.yml
:
targets:
node_dependencies:
input:
- paths: [package.json, package-lock.json]
output:
- paths: [node_modules]
build: npm install
test:
input:
- node_dependencies.output
- paths: [package.json, src, test]
build: npm test
lint:
input:
- node_dependencies.output
- paths: [package.json]
- paths: [src, test]
extensions: [js]
build: npm run lint
check:
dependencies: [test, lint]
start:
input:
- node_dependencies.output
- paths: [package.json, src]
service: exec npm run start
build:
dependencies: [check]
input:
- paths:
- Dockerfile
- package.json
- package-lock.json
- src
output:
- paths: [lambda.zip]
build: |
docker build -t build-my-project:latest .
docker create -ti --name build-my-project build-my-project:latest bash
docker cp build-my-project:/var/task/lambda.zip ./
docker rm -f build-my-project
一些命令示例
zinoma check
将确保代码符合测试套件和编码标准。zinoma start --watch
将在源代码更新时运行应用程序并重新启动。zinoma --clean build
将生成一个干净的工件,准备部署。
一个功能完整且更高级的示例项目可在fbecart/zinoma-node-example中找到。
构建
Žinoma是用Rust编写的,因此您需要获取Rust安装才能编译它。
要构建Žinoma
$ git clone [email protected]:fbecart/zinoma.git
$ cd zinoma
$ cargo build --release
$ ./target/release/zinoma --version
Žinoma 0.19.0
要运行测试套件,使用
cargo test
Žinoma探索者
Žinoma是立陶宛语单词。按照第一音节的重音读出来,应该听起来像regime中的gi。
在立陶宛语中,Žinoma有两个意思
- 当作为副词使用时,表示当然;
- 当作为形容词使用时,表示已知的(指代Not Invented Here Syndrome)。
它也是“Žinoma Is NOt MAke!”的递归首字母缩略词。
致谢
本项目最初是Steve Mostovoy的buildy的分支。
许可证
Žinoma在MIT许可证的条款下分发。
有关详细信息,请参阅LICENSE。
依赖关系
~13–28MB
~389K SLoC