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

@rushstack/webpack-workspace-resolve-plugin

v0.3.12

Published

This plugin leverages workspace-level metadata to greatly accelerate module resolution.

Downloads

408

Readme

@rushstack/webpack-workspace-resolve-plugin

This package contains a plugin for webpack 5 that leverages a cache file generated from package manager metadata to greatly accelerate module resolution. Local benchmarks have shown a savings of around 10% of build time for some fairly large closed source projects.

Installation

npm install @rushstack/webpack-workspace-resolve-plugin --save-dev

Overview

This plugin is intended primarily for use in pnpm monorepos, but any tool that produces a strict package layout can be made compatible by generating the necessary cache file.

The cache file contains information about the locations of every package.json file known to the package manager (including those in subdirectories of packages), as well as the list of declared dependencies of each and where they can be found.

When using this plugin, the following options should be configured for your resolver:

  • symlinks: false - Since the cache knows the symlinks for package dependencies, you can avoid the cost of testing for other symlinks unless you are using additional symlinks.
  • modules: [] - The cache should contain all information necessary to locate available dependencies for any arbitrary folder. If you need to allow resolution in other roots, you can add those, but omit 'node_modules'.

Impact

This plugin should eliminate file system calls associated with the following operations of NodeJS module resolution in webpack:

  • Find the nearest package.json to the calling module
  • Locate a named package from a calling module
  • Identify a package.json in a resolved directory
  • Find the nearest package.json to a resolved file path

Limitations

This plugin depends on the presence of a cache file in the workspace to function. Data in this cache file is assumed not to change while the webpack process is running.

Note: Generating the cache file is not in the scope of this plugin.

This plugin does not currently support having subdirectory package.json files within workspace projects (e.g. for declaring { "type": "module" } in mixed CommonJS/ESM packages). This plugin does not work (well) with a hoisted node_modules installation layout.

Links

@rushstack/webpack5-workspace-resolve-plugin is part of the Rush Stack family of projects.