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

@financial-times/d3-bootloader

v2.0.0-rc1

Published

Load D3 via SystemJS

Downloads

135

Readme

@Financial-Times/d3-bootloader

This users SystemJS to bootstrap and load a D3-based project. You can use modern JS because it transpiles everything on-the-fly.

Usage:

  • Create a .html file containing the following code:
  <script src="//unpkg.com/@financial-times/d3-bootloader" async></script>
  • Next, create a file called index.js in the same directory as the above:
import * as d3 from 'd3'; // Import the whole thing...
import {scaleLinear} from 'd3-scale'; // ...Or just bits and pieces, it doesn't matter.

export default async function () {
  return await Promise.resolve('Yep you can use ES2017 here too');
}

Voilà! The above module will run upon page load. Note this only works with D3, and a few of the sundry ft-interactive modules.

  • This also exposes a UMD global named bootD3 that returns a promise containing the resolved index.js module. That means you can then do something like:
<script>
  bootD3.then((index) => {
    index().then(alert);
  });
</script>

...Which, given the above index.js module, will alert with "Yep you can use ES2017 here too".

### What if I need more modules?

It's not like you can include this on page and then add any module in the npmjs.org registry. If you want to add another module (that's deliverable via a CDN like unpkg), add the following before your d3-bootloader script tag:

<script>
  window.D3_BOOTLOADER_MODULES = {
    'd3-jetpack': 'https://unpkg.com/d3-jetpack@2',
  }
</script>

Each key in the map object is what you'll import, and the value is a CDN resource exporting some kind of UMD module.

For more info, please see the SystemJS Configuration API Docs.

Should this be used in production?

Oh hells nawww — on-the-fly Babel transpilation isn't exactly the lightest thing ever.

Not only that, but every module you load from index.js will create a separate request.

This project is mainly intended to help streamline the creation of examples for ft-interactive/visual-vocabulary-templates. Again, you probably don't want to use this in production.