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

Download history 41/week @ 2024-04-29

149 个月下载量

MIT 许可证

345KB
2.5K SLoC

Žinoma

使您的构建流程增量化

Crates.io License: MIT Build status


为什么还需要另一个构建工具?

复杂的软件项目通常结合了多种技术,每种技术都配备了特定的构建工具。这类项目上的开发工作流程(例如,检查代码有效性、部署新版本)需要执行多个命令,而这些命令需要以协调一致的方式执行。

手动运行这些命令容易出错,因为很容易忘记命令或者以错误的顺序运行它们。另一方面,使用一个简单的脚本来系统性地运行所有这些命令又过于缓慢。

引入 Ž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)。通过查看您的目标中声明的inputoutput资源,Ž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