{"library":"ninja-build-gen","title":"Ninja Build Manifest Generator","description":"ninja-build-gen is a JavaScript library designed to programmatically create manifest files for the Ninja build system. As of its latest version, 0.2.2, published over a decade ago, the project appears to be abandoned, with no known active development or recent updates. It provides a low-level API to define build rules, edges, and variables directly in JavaScript, outputting a standard `build.ninja` file. It differentiates itself by offering direct, code-based generation of Ninja manifests, enabling developers to define their build logic dynamically. However, it explicitly does not include the Ninja build system itself, nor does it provide high-level features like file globbing or pattern matching, recommending external libraries such as `glob` or `globule` for such functionalities. Its minimal scope focuses solely on generating the build file structure.","language":"javascript","status":"abandoned","last_verified":"Sun Apr 19","install":{"commands":["npm install ninja-build-gen"],"cli":null},"imports":["const ninjaBuildGen = require('ninja-build-gen');","const ninjaBuildGen = require('ninja-build-gen');\nconst ninja = ninjaBuildGen('1.3', 'build');","const ninjaBuildGen = require('ninja-build-gen');\nconst escapedString = ninjaBuildGen.escape('string with spaces');"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"const ninjaBuildGen = require('ninja-build-gen');\nconst fs = require('fs');\n\n// Create a new Ninja build file for version 1.3, with 'build' as the build directory\nconst ninja = ninjaBuildGen('1.3', 'build');\n\n// Add rules for CoffeeScript and Stylus compilation\nninja.rule('coffee')\n     .run('coffee -cs < $in > $out')\n     .description(\"Compile Coffeescript '$in' to '$out'.\");\n\nninja.rule('stylus')\n     .run('stylus $in -o $$(dirname $out)')\n     .description(\"Compile Stylus '$in' to '$out'\");\n\n// Define build edges (tasks) using the created rules\nninja.edge('foo.js').from('foo.coffee').using('coffee');\nninja.edge('bar.js').from('bar.coffee').using('coffee');\nninja.edge('glo.css').from('glo.stylus').using('stylus');\n\n// Create an aggregate edge for all assets and set it as the default build target\nninja.edge('assets').from(['foo.js', 'bar.js', 'glo.css']);\nninja.byDefault('assets');\n\n// Save the generated Ninja manifest to 'build.ninja'\nninja.save('build.ninja');\n\nconsole.log('Generated build.ninja successfully.');\nconsole.log('To build, run: node configure.js && ninja');\n","lang":"javascript","description":"Demonstrates how to initialize `ninja-build-gen`, define custom build rules for CoffeeScript and Stylus, create build edges for source files, set a default target, and save the generated `build.ninja` file. This script effectively acts as a 'configure.js' for a project.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}