@wroud/vite-plugin-asset-resolver
Version:
A Vite plugin for custom asset resolution, mapping 'dist' to 'src' directories and resolving files like SVG, images, and other resources. Supports multiple directory aliases and file extensions for flexible module resolution.
132 lines (95 loc) • 3.52 kB
Markdown
[![ESM-only package][package]][package-url]
[![NPM version][npm]][npm-url]
[]: https://img.shields.io/badge/package-ESM--only-ffe536.svg
[]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[]: https://img.shields.io/npm/v/@wroud/vite-plugin-asset-resolver.svg
[]: https://npmjs.com/package/@wroud/vite-plugin-asset-resolver
`@wroud/vite-plugin-asset-resolver` is a flexible plugin that resolves asset imports by mapping 'dist' directories to 'src' directories, supporting custom file extensions. It works with Vite, esbuild, and Node.js, enabling custom asset resolution when default behavior fails, particularly for complex project structures.
- **Custom Asset Resolution**: Resolves asset imports (e.g., images, SVG) from `src` instead of `dist`.
- **Multiple Aliases**: Supports custom aliases for both `src` and `dist` directories.
- **Custom Extensions**: Allows configuring which file extensions should be resolved.
- **Multiple Platforms**: Works with Vite, esbuild, and Node.js loaders.gin-asset-resolver
## Installation
Install via npm:
```sh
npm install @wroud/vite-plugin-asset-resolver
```
Install via yarn:
```sh
yarn add @wroud/vite-plugin-asset-resolver
```
## Documentation
For detailed usage and API reference, visit the [documentation site](https://wroud.dev).
## Usage
### Vite Plugin
```ts
import { defineConfig } from "vite";
import { assetResolverPlugin } from "@wroud/vite-plugin-asset-resolver";
export default defineConfig({
plugins: [
assetResolverPlugin({
dist: ["dist", "build"],
src: ["src", "source"],
extensions: [".svg", ".png", ".jpg"],
}),
],
});
```
```ts
import { build } from "esbuild";
import { assetResolverPlugin } from "@wroud/vite-plugin-asset-resolver/esbuild";
build({
entryPoints: ["src/index.ts"],
plugins: [
assetResolverPlugin({
dist: ["dist", "build"],
src: ["src", "source"],
extensions: [".svg", ".png", ".jpg"],
}),
],
});
```
```ts
import { registerAssetResolver } from "@wroud/vite-plugin-asset-resolver/node-loader-register";
// Register the loader before importing any modules that need asset resolution
registerAssetResolver({
dist: ["dist", "build"],
src: ["src", "source"],
extensions: [".svg", ".png", ".jpg"],
});
// Now import your modules
import "./your-module-with-assets.js";
```
```sh
node --loader @wroud/vite-plugin-asset-resolver/loader your-script.js
ASSET_RESOLVER_OPTIONS='{"dist":["build"],"src":["source"]}' node --loader @wroud/vite-plugin-asset-resolver/loader your-script.js
```
```ts
// main.ts
import { register } from "node:module";
// Register the loader
register("@wroud/vite-plugin-asset-resolver/loader", import.meta.url);
// Set options globally
if (typeof globalThis !== 'undefined') {
(globalThis as any).__ASSET_RESOLVER_OPTIONS__ = {
dist: ["dist", "build"],
src: ["src", "source"],
extensions: [".svg", ".png", ".jpg"],
};
}
// Import your application
import "./app.js";
```
All notable changes to this project will be documented in the [CHANGELOG](./CHANGELOG.md) file.
This project is licensed under the MIT License. See the [LICENSE](./LICENSE) file for details.