onyx-ignition-forge
v0.1.8
Published
--- ## Getting started
Downloads
5
Readme
Forge
Getting started
Having certain software preinstalled is required. More robust installers will be added. For now it recommended to preinstall Node
, Python
, and Enscripten
- Clone the git repo.
git clone https://github.com/drew-eastmond/Forge.git
- Execute the
Forge/install.js
script. if --init parameter will add an empty.forge
configuration file.Forge
currently supports the following packages and more will be added.--typescript
,--tailwindcss
,--sass
,--twig
,--enscripten
node ./Forge/install.js --init <package_1> <package_2> <...package_n>
- Modify the
.forge
configuration file. AddForgeServices
,ForgeTasks
, andForgeActions
. Check the wiki on how to modify the configuration files. - Run the
node ./Forge/run.js
or build your
What is Forge?
Forge
is an incremental build system for creating your own custom pipelines. On top of wrapping CLI processes it is written in Node to streamline developing projects that require multiple laungauges and with it mulitple frameworks. Forge provides interoperability by capturing interprocess communications and processing those messages into signals
to be used by Forge
dispatch to ForgeActions
that implement those signals
.
Forge
also adds extra functionality like:
| Feature | Description |
| ------ | ------ |
| File Watching | Launch ForgeActions
based on Regular Expressions |
| File Server | Serves from a local development enviroment |
| Routing and Remote Invocation | Invoke any functionality exposed by a ForgeService
using routing. Extend the ForgeClient
and implement your own delegates. |
| Dashboards and UI Panels | Leverages the routing system to expose ForgeService's
to render forms and HTML. Provide your developers with status updates or edit parameters via an UI. |
| Persistent storage | Import, export, or share development sessions amoung mulitple developers |
Forge
was architecteched to utilize a simplified paradigm so developers can adopt it quickly, and provide a pleasant developer experience. It should be noted Forge
does not replace tools like Webpack, Esbuild, TailwindCSS, SASS, Vite, Create-React-App, etc, but instead Forge
wraps them using process adapters.
Forge
is not just limited to local development pipelines but can creatively integrate remote processes and sequence advanced dependencies. Create remote collaborations or bootstrap your own CI/CD pipelines from custom scripts.
Currently Forge
is built in Node but there are provisions to mirror the library to run exclusively in Python
.
Right now l am focused on making HTML5 game development more streamlined. So Forge current will have a focus on Typescript/Javascript, WASM, CSS, HTML. Most importantly Forge is not limted to Node, but has provisions for python, C++, RUST, and manipulating image and sound assets. Remember Forge was built around polyglot development, so long as those tools can be launched via the CLI using exec, spawn, fork, or workers.
Forge
is composed of the following modules:
| Components | Description | Status |
| ------ | ------ | ----- |
| Forge | A Manager class. | Stable |
| ForgeStream | Handles a pipeline execution run, and queueing ForgeActions
based on dependencies to other ForgeActions
| Stable |
| ForgeTask | A collection of ForgeActions
. | Stable |
| ForgeAction | Captures and dispatch IPC messages to a ForgeService
service. | Stable |
| Dashboard | Dashboard to manage all configurations for ForgeTasks
and ForgeActions
. Can also launch ForgeActions
manually if implmented | Unstable |
| ForgeStorage | Provides an abstraction for persistent storage for Services
or ForgeActions
( memory, files, databases ). | Unstable |
| ForgerServes | Quickly serve build files from any folder. | Stable |
| Routing | Internal routing to render custom UIs within the developer Dashbaord. Meant for knowledgeable developers to build forms that will customize configurations during dispatch. Ideally for seniors to implement for junior developers. | Prototype |
| Watch | Watch files and dispatch ForgeActions
based on matches | Stable |
Examples
by setting up a .forge config file. Forge will parse this file, inject variables and reparse the file. {static_variable} will be replaced with vaiables in the variable. {{dynamic_varaible}} will be resolved each signal. These can be nested and accessed via dot notations.
If your want to customize Forge
you can write your own script and compile them. Forge can easily build and run typescript files. THe sourve files are included so you can bootstrap your own custom build pipelines.