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

@planet-a/parcel-optimizer-versioned-imports

v0.0.3

Published

A Parcel optimizer that allows you to use versioned imports in your bundled code.

Downloads

7

Readme

Parcel Optimizer for versioned imports

Transforms code looking like this:

import { bar } from "foo";

with package-lock.json defining version 1.2.3 for foo into:

import { bar } from "[email protected]";

as needed for Pipedream for example.

Caveats

  • I added rudimentary sourcemap support, but as Pipedream does not currently support source maps, it is untested.If you need working sourcemap support for this optimizer -> Contributions welcome.
  • Only works for ImportDeclaration nodes, not commonjs imports. Contributions welcome.
  • Currently only supports npm-based projects that have a package-lock.json file, as this is used to determine the embedded version. It should be simpel to support other packagers and their dependency graph definitions -> Contributions welcome (starting point could be this package).

How to use

{
  "extends": "@parcel/config-default",
  "optimizers": {
    "*.{js,mjs,jsm,jsx,es6,cjs,ts,tsx,mts,cts}": [
      "...",
      "@planet-a/parcel-optimizer-versioned-imports"
    ]
  }
}

Options

  • ignoreSubmoduleImports: if set to true, import with submodule paths will not be versioned, e.g. import "fs-extra/esm" will be left alone.

You can create a .parcel-optimizer-versioned-importsrc config file or put it into the respective package.json section, e.g.:

  "@planet-a/parcel-optimizer-versioned-imports": {
    "ignoreSubmoduleImports": true
  }

Why is this not a Transformer plugin?

Transformers require that import declarations can be resolved after transformation, as other transformers may need/want to transform the code further. Changing an import into a non-standard import (in the node world, not the Deno world) like package@version means subsequent resolution fails. Optimizers are run at the end of the pipeline and are this one is meant to be the very last one that does code transformations with introspection.