{"id":19489484,"url":"https://github.com/1j01/buildgraph","last_synced_at":"2025-02-25T19:26:47.364Z","repository":{"id":15615690,"uuid":"18352137","full_name":"1j01/BuildGraph","owner":"1j01","description":"DEPRECATED PROJECT IDEA - A visual node-graph-based cascading build system","archived":false,"fork":false,"pushed_at":"2016-09-08T20:57:16.000Z","size":94,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-08T08:40:38.645Z","etag":null,"topics":["build","build-pipelines","build-system","build-tool","building","grunt","gulp","node-graph","pipe"],"latest_commit_sha":null,"homepage":"","language":"CoffeeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/1j01.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-04-02T02:30:18.000Z","updated_at":"2018-11-13T01:59:33.000Z","dependencies_parsed_at":"2022-09-06T19:42:16.193Z","dependency_job_id":null,"html_url":"https://github.com/1j01/BuildGraph","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1j01%2FBuildGraph","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1j01%2FBuildGraph/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1j01%2FBuildGraph/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1j01%2FBuildGraph/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/1j01","download_url":"https://codeload.github.com/1j01/BuildGraph/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240731784,"owners_count":19848581,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["build","build-pipelines","build-system","build-tool","building","grunt","gulp","node-graph","pipe"],"created_at":"2024-11-10T21:08:44.489Z","updated_at":"2025-02-25T19:26:47.326Z","avatar_url":"https://github.com/1j01.png","language":"CoffeeScript","readme":"\n*NOTE: This readme represents an optimistic future for this project, which is basically just an idea.*\n\n# BuildGraph\n\n**Grunt** is confusing and overcomplicated. Seriously.\n\n**Gulp** has a nice piped structure and clean code, but you have to install and setup plugins to get incremental building, and to do watching at all you have to create a separate task for each task you want to allow watching for and manually specify the set of files that will trigger the task. Same goes for cleanup: make a task and manually tell it everything it needs to clean up.\n\n**BuildGraph** takes Gulp's piped structure, watches files automatically with incremental rebuilds, and lets you define your build tasks without code (except [where you need it](#custom-code)).\n\n(**[Anvil](https://github.com/anviljs/anvil.js/)** also claims incremental rebuilding of changed files and affected files.)\n\nOther build tools have CLIs; BuildGraph can be run as a command-line GUI or a standalone application.\n\nBuildGraph lets you define your tasks by typing out simple conversion commands.\nYou get autocomplete for files and folders, as well as conversions.\n\nSources, conversions, and destinations get expanded to blocks.\n\nYou end up creating a node graph with connections between blocks.\nConnections transfer streams of files, and are represented as wires.\nConnections that handle source maps are represented as doubled wires.\n\n### Conversions\n\nBuildGraph can infer most conversions from a source and destination.\n\nFor example, `app/*.coffee -\u003e build/*.js` means compile coffee from app/ to build/\nwhereas `app/*.coffee -\u003e build/*` means just copy the files to build.\n\nOther conversions you need to type out, like \"strip comments\" or \"alphabetize lines\".\n\nSee [Conversions.MD](./Conversions.MD) for a list of possible conversions.\n\n(Conversions are defined by plugins, of course.)\n\n### Tasks\n\nEvery build system that I know of (Grunt, Gulp, Cake) has support for multiple tasks.\n\nIn BuildGraph, they're nicely represented as tabs.\n\n### Cleanup\n\nGulp and grunt require manual cleanup modules. Or you can use convoluted `fs` code. Or you can just clean up yourself.\n\nBuildGraph knows what files are originative or not and can clean up for itself at the click of a button.\n\n### Console\n\nBuildGraph also has a \"console\" where you can build a temporary graph/task/command to be executed. (with command history)\n\nThis is great for one-off transpilation like [js-\u003ecoffee](http://js2.coffee) block!)\n\nYou can save commands as tasks.\n\n### Custom Code\n\nWhat about my super special code?\n\nBuildGraph has Run Blocks.\nRun Blocks can be standalone, but they can also be source blocks, destination blocks, or conversion blocks.\n\n#### Say you want to operate on a list of files from the output of a program\n\nYou'd return a list or stream of files (or filenames?), and then pipe the run block into some other block(s).\n\n#### Say you want to download the latest tarball of a project on [Launchpad](launchpad.net)\n\nYou'd make a run block to [scrape the webpage to find the tarball URL](https://github.com/1j01/elementary.css/blob/b6b7a08906af194556cd5a49f3e44da1c934fbaa/Cakefile#L37-L44)\nand then just pipe that to a directory to download and extract it.\nOkay actually that might just download it and place it in the folder.\nWorse case senario you'd have to pipe it to a file first, but hopefully you can express that you want extraction easily.\nIt's a little tricky since a URL could return just about anything.\nMaybe you'd have to start typing out \"extract\" to explicitly create an extraction block.\nYou'd need to be able to do that sort of thing for plugins that don't have source/destination clues, like \"strip comments\" etc.\n\n### build-graph\n\n**build-graph** is a cascading build system.\n\n**BuildGraph** is a visual node-graph based cascading build system.\n\nYou include `build-graph` in your `scripts` to run it with `npm run build`, but you edit it with the nice GUI.\n\nbuild-graph might actually be able to use gulp internally; it does have [plugins for incremental rebuilding](https://github.com/gulpjs/gulp#incremental-builds) and there's [gulp-watch](https://www.npmjs.com/package/gulp-watch) (I don't know if that's redundant or what)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F1j01%2Fbuildgraph","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F1j01%2Fbuildgraph","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F1j01%2Fbuildgraph/lists"}