npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@onyx-ignition/forge

v0.0.7

Published

Core library used for all Forge Packages

Downloads

90

Readme

Forge


Getting Started ( Blazingly Fast via NPX )

You probably don't have much time to think! The sales team is down your ass to build something later today.

I Got You Buddy!!!

npx onyx-ignition-forge --init --flatten --typescript --packager-- pnpm 

This will install a unzipped clone forge ( from master ) that is pre-configured with:

  • Node packages via pnpm ( there are also options npm, pnpm, yarn)
  • Typescript Bundler that you can invoke via triggers ( like File Watching ).
  • Finally Please update .forge file with entry and compile targets. Here's an example to configure file watching for ts, js, jsx, tsx and compile src/ts/main.tsx into /www/js/compiled.js
[
    {
        "service": "typescript_bundler",
        "triggers": [
            { "watch": [ "\\.[tj]s(x?)$" ] }
        ]
    },
    {
        "in": "{src.root}/ts/main.tsx",
        "out": "{build.root}/www/js/onyx.js",
        "bundled": true,
        "platform": "browser",
        "format": "cjs"
    }
]

| Package | Params | Status | | ------ | ------ | ------ | | Typescript | --typescript | Pending... | | TailwindCSS | --tailwindcss | Pending... | | SASS | --sass | Pending... | | WASM | --wasm | Pending... |

  • TailwindCSS compiler. Be mindful of your project structure, as tailwind will install from the Current working Directory
npx onyx-ignition-forge -i --npm|-- <package_1> <package_2> <...package_n>

Getting Started Manually

This is the way our ancestors did it. THey didnt have all that fancy smacy technologies. They used vacuum tubes, light bulbs, and hole punched paper. 'Cause they nasty like that and they love it ;)

Start with cloning the main repo then added extenstions as needed. I'll look into more robust installers giving their are other priorities.. For now it recommended to preinstall Node, Python, and Enscripten

  1. Clone the git repo.
git clone https://github.com/drew-eastmond/Forge.git
  1. 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>
  1. Modify the .forge configuration file. Add ForgeServices, ForgeTasks, and ForgeActions. Check the wiki on how to modify the configuration files.
  2. 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.

Forge Wiki: .forge Example

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.

Forge Wiki: Customized run.js Example