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

vite-plugin-prefetch-chunk

v0.1.2

Published

Vite plugin for adding prefetch resource hints in HTML

Downloads

76

Readme

vite-plugin-prefetch-chunk

npm

Vite plugin for adding prefetch resource hints in HTML.

<link rel="prefetch"> is a type of resource hint that tells the browser to prefetch content that the user may visit in the near future in the browser's idle time, after the page finishes loading.

In most cases, prefetching all asynchronous chunks is not a wise choice, especially when using code splitting with router: this will cause the client to always download resources of all routes, even if those pages will never be visited.

Prefetch links will consume bandwidth, which is often unacceptable if you have a large app with many async chunks and your users are primarily mobile and thus bandwidth-aware. Therefore, this plugin is designed to be used in a way that requires manual declaration on the asynchronous module that you want to be prefetched.

Prefetch links are always generated at the end of head. You can refer to vite-plugin-html-sort-tags if you want to optimize the sorting.

Also see vite-plugin-auto-preload if you want to generate preload or module preload links.

Installation

npm install --save-dev vite-plugin-prefetch-chunk

Usage

// vite.config.js
import prefetchChunk from 'vite-plugin-prefetch-chunk'

export default {
  plugins: [
    prefetchChunk(),
  ],
}

There are two ways to prefetch an async module:

Virtual Module (recommended)

You can add an additional import statement in the module that you want to be prefetched:

// my-module.ts
import 'virtual:prefetch'

After doing this, the plugin will generate resource hints for the bundle containing this module when it is imported asynchronously. Virtual modules within synchronized blocks will be ignored.

This solution obviously does not apply to assets. For files without import/export, another way could be used.

Resource Query

You can also add the resource query ?prefetch when importing a module asynchronously, just like ?raw or ?worker:

import(`./my-module?prefetch`)

This is somewhat similar to /* webpackPrefetch: true */. When the query is specified, the plugin will generate resource hints for the bundle containing this module.

It is worth noting that TypeScript cannot resolve resource queries correctly, so it is recommended to use this way for assets only. And, in order to support TypeScript, you may also need to add type declarations to your global .d.ts similar to the following:

import 'vite/client';

declare module '*?prefetch' {
   // export type declaration
   // ...
}

Options

prefetchLegacyChunks

  • Type: boolean

    Whether to add prefetch links for legacy chunks.

    By default, legacy chunks generated by @vitejs/plugin-legacy or vite-plugin-legacy-swc will not be prefetched. This is to ensure that modern browsers download additional files as less as possible.

    If you specify renderModernChunks: true for @vitejs/plugin-legacy or vite-plugin-legacy-swc, it is recommended to enable this option to enable prefetch capabilities.