Skip to content

chase-moskal/importly

Repository files navigation

📦📡 importly — import map generator

importly is a command-line utility that generates import maps.

so your apps can load es module packages without a bundler.

works nicely with es-module-shims.


🛸 importly basic usage

npx importly < package-lock.json > importmap.json

--host=node_modules
specify where the import map points to.
where the dependencies will be loaded from.

  • --host=node_modules (default) — point to your node_modules directory
  • --host=unpkg — point to the unpkg cdn
  • --host=jsdelivr — point to the jsdelivr cdn

--dev
include your package's devDependencies.


--lookup=node_modules
tell importly where to seek information about packages.
it needs to inspect each package json.

  • --lookup=node_modules (default) — look in your local node_modules directory
  • --lookup=unpkg — query the unpkg cdn
  • --lookup=jsdelivr — query the jsdelivr cdn

--root=/
the url prefix that leads to your node_modules directory.
this affects where the importmap is pointing to.
only applies when --host=node_modules.

  • --root=/ (default) — find node_modules at your server root
  • --root="" — find node_modules in the current directory
  • --root=/my/special/path/ — find node_modules at /my/special/path/node_modules

--semver=exact
the semver prefix to use on the import map versions.
only applies when pointing to a cloud cdn.

  • --semver=exact or --semver="" (default) no prefix, use pinned versions
  • --semver=major or --semver=^ pin major version, with caret prefix
  • --semver=minor or --semver=~ pin minor version, with tilde prefix

--mini
minify importmap output.
eliminates whitespace.


🌠 the more you know, about importly

you don't have to use a package-lock.json

  • a package.json will work.
  • actually, any json that has dependencies will work.
  • however, the package-lock.json is better because it includes subdependencies (and they're scoped, which means your dependencies can use different versions of a single subdependency)

scoped subdependencies only work when

  • you're using a package-lock.json
  • and you're using --host=node_modules

works offline when

  • you're using --host=node_modules
  • and you're using --lookup=node_modules

🍻 importly is open source

  • ask any questions in the issues or discussions tab
  • fix that bug, send me those pull requests
  • show me some love with your sweet github stars