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

@orientesh/frontend

v1.0.25

Published

A eggjs frontend for bulb project

Downloads

29

Readme

@orientesh/frontend

A frontend framework for bulb-project**[WIP]**.

Table of Contents

Motivation

To get our hands dirty in server-side rendering, it's quite obvious we'd need a Node.js layer. Alas, adding an extra layer for server-side rendering simply brings more complexity to the whole system and more chores for deployment.

Design Goals

  • Bulb is uniform. By "uniform", we mean we'd want to free application developers from managing fragmented chores.

  • Bulb is extensible. Bulb is bult on top of Egg.js, which is plugable. In fact, any existing plugins work directly in Bulb.

  • Bulb is distributed. Any serious softwares are distributed. This is the only way to robustness.

  • Bulb is fast.

Implementation

Hence, we've built a frontend on top of eggjs to take care of some fragile tasks:

  • Transpilation & bundling.

  • Preserve transpiled assets:

    • Store server-side assets to remote distributed file system(in our case, seaweedfs)
    • Push static client-side assets to CDN(TODO)

These tasks are handled by bulb online and yes, the build step is performed online.

Nonetheless, duplications of above tasks occur when deploying more than a single bulb application. In order to resolve this problem, we've chosen Zookeeper for distributed synchronization:

  • Take the above tasks as a whole single mono task, let's say, pack, which succeeds when all sub tasks succeed. It doesn't matter if it's halfway done, since those emitted/synced files will either be obsoleted or overwritten.

  • Each bulb server will be likely to execute pack. But before it does, it first proposes pack to a Zookeeper server, if it is the chosen leader, then it starts packing; otherwise it becomes a follower and waits.

  • Emitted server-side assets are fetched on demand, by other followers.

When pack is done, every server is ready.

Webpack

TODO

SeaweedFS

TODO

CDN

TODO