JSR: The JavaScript Registry

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • esm.sh

    A fast, smart, & global CDN for modern(es2015+) web development.

  • Unpkg serves whatever is published to NPM, and if it's a library intended for the browser, that often includes minified versions ready for use in script tags, for example, https://unpkg.com/[email protected]/mithril.min.js. Sometimes the default export is CJS (which has require() calls), in which case, you can usually use the browse url that I mentioned to see if there's another export you can use.

    https://esm.sh/ is definitely a good option too if you're OK with modules.

  • proposal-source-phase-imports

    Proposal to enable importing modules at the source phase

  • We will soon support WASM imports (`import source foo from "./foo.wasm"`). [1]

    [1]: https://github.com/tc39/proposal-source-phase-imports

  • SurveyJS

    Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.

    SurveyJS logo
  • fs-js

    Experimental filesystem API for the browser and Bun/Node/Deno (bunodeno)

  • I think maybe I was unclear. I'm talking about writing libraries that abstract across these differences and provide a single API, as sibling describes. I already know it's possible. I made a simple filesystem abstraction here[0] and a very simple HTTP library that uses it here[1]. They both work in Node/Deno and the browser. Unfortunately I ran into issues with Bun's slice implementation[2]. But I suspect there's a much better way of detecting and using the different backends.

    [0]: https://github.com/waygate-io/fs-js

    [1]: https://github.com/waygate-io/http-js

    [2]: https://github.com/oven-sh/bun/issues/7057

  • http-js

  • I think maybe I was unclear. I'm talking about writing libraries that abstract across these differences and provide a single API, as sibling describes. I already know it's possible. I made a simple filesystem abstraction here[0] and a very simple HTTP library that uses it here[1]. They both work in Node/Deno and the browser. Unfortunately I ran into issues with Bun's slice implementation[2]. But I suspect there's a much better way of detecting and using the different backends.

    [0]: https://github.com/waygate-io/fs-js

    [1]: https://github.com/waygate-io/http-js

    [2]: https://github.com/oven-sh/bun/issues/7057

  • bun

    Incredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one

  • I think maybe I was unclear. I'm talking about writing libraries that abstract across these differences and provide a single API, as sibling describes. I already know it's possible. I made a simple filesystem abstraction here[0] and a very simple HTTP library that uses it here[1]. They both work in Node/Deno and the browser. Unfortunately I ran into issues with Bun's slice implementation[2]. But I suspect there's a much better way of detecting and using the different backends.

    [0]: https://github.com/waygate-io/fs-js

    [1]: https://github.com/waygate-io/http-js

    [2]: https://github.com/oven-sh/bun/issues/7057

  • jsr

    The open-source package registry for modern JavaScript and TypeScript

  • tuplates

  • I've experimented[0] with something along these lines. The basic idea is that it's desirable to be able to reuse snippets/functions across projects, but you shouldn't need to go full left-pad. So basically any line comment that includes "tuplate_start(URI)" it goes out and fetches the URI (local or HTTP supported), and replaces everything until it finds a line comment with "tuplate_end". Nice thing is it enables basic templating in any language. Also combines really nicely with jsdelivr where you can import specific versions of files directly from GitHub.

    [0]: https://github.com/anderspitman/tuplates

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • butterfloat

    The greatest view engine for the modern web

  • You can just use npm and ship node_modules on your website. It's probably "huge" so you probably want to clean out dev dependencies first (`npm prune --omit=dev` is one way to clean that) and you might find it useful to search for big binaries to filter out and redundant directories that you don't need (libraries that still include all of UMD and CommonJS and ESM builds even though you only need one), and there may still be libraries that don't directly load in the browser and you need to spot bundle with a tool like esbuild to a vendor directory.

    Mostly the only other glue you need after that is an import map.

    I find this flow useful (ship an optionally pruned node_modules, spot build specific vendor libraries, add import map), especially for lightweight development/testing, and so I did document it specifically from start to finish for one of my projects, it includes a vendor build one-liner:

    https://worldmaker.net/butterfloat/#/getting-started?id=setu...

    (The Example section after the Dev Environment one shows the import map at the top of the example HTML if you are looking for that. I forgot that's where it was when re-reading this.)

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts