Verda is a build system for JavaScript and TypeScript projects that employs a tracing promise runner model, enabling dynamic dependency resolution for build tasks. As of version 1.14.0, it ships with comprehensive TypeScript types and supports strongly-typed rules, enhancing reliability and maintainability for complex build graphs. Unlike traditional static build tools, Verda allows dependencies to be computed at runtime based on the immediate needs of the build process, offering significant flexibility in defining and executing build recipes. While a specific release cadence isn't explicitly stated, the version number indicates active development. Its core differentiators include dynamic dependency computation, a promise-based architecture for efficient asynchronous task management, and first-class TypeScript integration for defining robust build rules.
npm install verdaVerified import paths — ran on the pinned version, not inferred.
This quickstart demonstrates defining a basic build system with Verda, including an oracle rule, a file glob rule to compile a C file, and a final executable rule. It shows how to use `build.setJournal`, `build.ruleTypes` (oracle, file), and `build.actions` (run, cp, rm) to create a multi-stage build process. It also sets up a dummy source file for demonstration.
Organize rules logically, use explicit `t.need()` calls, and regularly review the build graph for potential complexities. Leverage the journal file to understand execution flow.
Stick to `require()` for Node.js scripts as shown in the documentation. For TypeScript projects, ensure your `tsconfig.json` `module` setting is compatible (e.g., `CommonJS`) or use a bundler that handles CJS-to-ESM conversion.
Always configure `build.setJournal()` with a valid, writable file path. It's recommended to place the journal file within your build output directory, e.g., `build/.verda-journal`.
Run `npm install verda` or `yarn add verda` in your project directory. Ensure your Node.js project's `node_modules` are correctly set up.
Ensure `const build = createBuildAndThenStart();` is called before accessing `build.ruleTypes` or `build.actions`.
Rearchitect your build rules to break the circular dependency. Ensure that a rule only `need`s outputs from previous stages and does not implicitly or explicitly depend on its own output or a future stage.
No dependency data recorded yet.