{"id":20644,"library":"unplugin-inject-preload","title":"unplugin-inject-preload","description":"Universal plugin to inject <link rel='preload'> tags into HTML output for Vite 4/5, Webpack 5 (with HtmlWebpackPlugin), and Rspack 1.0 (with HtmlWebpackPlugin or HtmlRspackPlugin). Current stable version is 3.0.0, released with Rspack 1.0 support and dropped support for Rspack 0.x. Replaces separate packages vite-plugin-inject-preload and html-webpack-inject-preload. Ships TypeScript types. Release cadence is irregular, with minor releases featuring breaking changes. Key differentiator: single unified API across multiple bundlers.","status":"active","version":"3.0.0","language":"javascript","source_language":"en","source_url":"https://github.com/applelo/unplugin-inject-preload","tags":["javascript","unplugin","vite","webpack","rspack","html-webpack-plugin","html","link","preload","typescript"],"install":[{"cmd":"npm install unplugin-inject-preload","lang":"bash","label":"npm"},{"cmd":"yarn add unplugin-inject-preload","lang":"bash","label":"yarn"},{"cmd":"pnpm add unplugin-inject-preload","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Required for Webpack and Rspack (when using HtmlWebpackPlugin) builds to inject preload links.","package":"html-webpack-plugin","optional":true}],"imports":[{"note":"Import from subpath /vite for Vite, /webpack for Webpack, /rspack for Rspack. The plugin is ESM-only; CommonJS require may fail depending on bundler.","wrong":"const UnpluginInjectPreload = require('unplugin-inject-preload')","symbol":"UnpluginInjectPreload","correct":"import UnpluginInjectPreload from 'unplugin-inject-preload/vite'"},{"note":"For Webpack: use subpath /webpack. Requires html-webpack-plugin ≥5.0.0.","wrong":"const UnpluginInjectPreload = require('unplugin-inject-preload/webpack')","symbol":"UnpluginInjectPreload","correct":"import UnpluginInjectPreload from 'unplugin-inject-preload/webpack'"},{"note":"For Rspack: use subpath /rspack. Supports both HtmlWebpackPlugin and HtmlRspackPlugin.","wrong":"const UnpluginInjectPreload = require('unplugin-inject-preload/rspack')","symbol":"UnpluginInjectPreload","correct":"import UnpluginInjectPreload from 'unplugin-inject-preload/rspack'"},{"note":"Direct import exists but returns a generic factory; prefer specific subpath for clarity.","wrong":null,"symbol":"UnpluginInjectPreload","correct":"import UnpluginInjectPreload from 'unplugin-inject-preload'"}],"quickstart":{"code":"// For Vite: vite.config.ts\nimport UnpluginInjectPreload from 'unplugin-inject-preload/vite';\n\nexport default defineConfig({\n  plugins: [\n    UnpluginInjectPreload({\n      files: [\n        {\n          match: /\\.(woff2|woff)$/,\n        },\n      ],\n    }),\n  ],\n});","lang":"typescript","description":"Configure Vite to inject preload links for all .woff2 and .woff font files built by the bundler."},"warnings":[{"fix":"Upgrade Rspack to 1.0.x or later. For Rspack 0.x, stick with v2.x.","message":"Drop support for Rspack 0.x versions. v3.0.0 only supports Rspack 1.0.","severity":"breaking","affected_versions":">=3.0.0"},{"fix":"Upgrade to Vite 4 or 5.","message":"Drop support for Vite 3. v2.0.0 requires Vite 4 or 5.","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Update your `outputMatch` regex to handle base64 hashes (e.g., allow longer alphanumeric strings).","message":"Rollup 4 (shipped with Vite 5) uses base64 hashes in file names instead of base16 hashes. This may break `outputMatch` patterns expecting base16.","severity":"deprecated","affected_versions":">=2.0.0"},{"fix":"Test preload injection with `vite build` only. Dev server will not inject preload links.","message":"The Vite plugin only works on build (not dev server). Assets are not available during development.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"search_vec":"'0':42 '1.0':22,35 '3.0.0':31 '4/5':15 '5':17 'across':76 'api':75 'break':69 'bundler':78 'cadenc':62 'chang':70 'current':27 'differenti':72 'drop':38 'featur':68 'html':11,54,85,88 'html-webpack-inject-preload':53 'html-webpack-plugin':84 'htmlrspackplugin':26 'htmlwebpackplugin':19,24 'inject':3,8,50,56 'irregular':64 'javascript':79 'key':71 'link':89 'minor':66 'multipl':77 'output':12 'packag':46 'plugin':6,49,87 'preload':4,51,57,90 'releas':32,61,67 'replac':44 'rspack':21,34,41,83 'separ':45 'ship':58 'singl':73 'stabl':28 'support':36,39 'tag':9 'type':60 'typescript':59,91 'unifi':74 'univers':5 'unplugin':2,80 'unplugin-inject-preload':1 'version':29 'vite':14,48,81 'vite-plugin-inject-preload':47 'webpack':16,55,82,86 'x':43","created_at":"2026-04-25T11:24:12.750479+00:00","updated_at":"2026-04-25T11:24:12.750479+00:00","problems":[{"fix":"Ensure you are using the correct import path: 'unplugin-inject-preload/vite', '/webpack', or '/rspack'. Also verify the package is installed.","cause":"Missing subpath export or using wrong bundler-specific import.","error":"Cannot find module 'unplugin-inject-preload/vite'"},{"fix":"Use default import: import UnpluginInjectPreload from 'unplugin-inject-preload/vite'","cause":"Importing from a wrong path or using a default import when only named export exists.","error":"TypeError: UnpluginInjectPreload is not a function"},{"fix":"Install html-webpack-plugin@>=5.0.0 as a devDependency.","cause":"Missing html-webpack-plugin for Webpack/Rspack builds.","error":"Error: html-webpack-plugin is required as a peer dependency"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":"","cli_version":null,"type":"library","homepage":null,"github":"https://github.com/applelo/unplugin-inject-preload","docs":null,"changelog":null,"pypi":null,"npm":"https://www.npmjs.com/package/unplugin-inject-preload","openapi_spec":null,"status_page":null,"smithery":null,"categories":["web-framework"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-17","next_check":"2026-07-24","install_tag":null}}