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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@absolu/assets-toolkit

v1.0.2

Published

Toolkit Vite pour les pipelines d'assets front-end : factory de configuration, plugins iconfont et svgstore

Readme

@absolu/assets-toolkit

npm

Toolkit Vite pour les pipelines d'assets front-end. Fournit une factory de configuration Vite et deux plugins Vite (iconfont & svgstore), pensés pour les projets utilisant Vite avec SCSS (typiquement des thèmes Drupal ou CMS).

Installation

npm install @absolu/assets-toolkit@latest

Peer dependencies

| Paquet | Requis | |---|---| | vite >= 5.0.0 | oui | | sass >= 1.0.0 | oui | | vite-plugin-imagemin >= 0.6.0 | optionnel | | vite-plugin-live-reload >= 3.0.0 | optionnel |

Utilisation rapide

Créez un fichier vite.config.ts à la racine de votre projet :

import { createViteConfig } from '@absolu/assets-toolkit'
import localConfig from './config.json' with { type: 'json' }

export default createViteConfig({
    base: '/themes/custom/mon-theme/assets',
    localConfig,
})

C'est tout. Tous les plugins (iconfont, svgstore, live reload) sont activés par défaut avec des valeurs sensibles. Vous pouvez les personnaliser ou les désactiver individuellement (voir API ci-dessous).

Le fichier config.json (non versionné) contient uniquement la configuration locale, propre à chaque machine :

{
    "server": {
        "https": {
            "key": "/chemin/vers/localhost-key.pem",
            "cert": "/chemin/vers/localhost.pem"
        }
    }
}

API

createViteConfig(options)

Factory qui produit une configuration Vite complète avec des valeurs par défaut sensibles (globs d'entrée, chemins de sortie, alias, plugins).

| Option | Type | Défaut | Description | |---|---|---|---| | base | string | — | Requis. Chemin de base pour le serveur de dev (ex. /themes/custom/mon-theme/assets) | | localConfig | LocalConfig | — | Configuration locale non versionnée (certificats HTTPS) | | iconfont | IconfontOptions \| false | {} (activé) | Options du plugin iconfont. false pour désactiver | | svgstore | SvgstoreOptions \| false | {} (activé) | Options du plugin svgstore. false pour désactiver | | imagemin | boolean | true | Activer le plugin imagemin | | liveReload | string[] \| false | ['../templates/**/*.twig'] | Glob patterns pour le live reload. false pour désactiver | | entries | string[] | voir ci-dessous | Glob patterns des fichiers d'entrée | | entriesIgnore | string[] | voir ci-dessous | Patterns à exclure | | manualChunks | (id: string) => string \| undefined | — | Définition des manual chunks | | plugins | Plugin[] | — | Plugins Vite supplémentaires |

localConfig

Configuration locale, typiquement chargée depuis un config.json non versionné.

| Propriété | Type | Description | |---|---|---| | server.https.key | string | Chemin vers le fichier clé privée du certificat SSL | | server.https.cert | string | Chemin vers le fichier certificat SSL |

Valeurs par défaut

Entrées :

  • src/scss/*.scss
  • src/scripts/*.{js,ts}
  • src/iconfonts/*.{woff2,woff}
  • src/images/**/*.{png,jpeg,jpg,gif,svg}

Exclusions : src/images/icons/**/*.svg, src/images/icons-sprite/**/*.svg

Alias : @src/, @imagessrc/images/, @fontssrc/fonts/

Sortie : dist/ avec organisation automatique (css, scripts, images, iconfonts, fonts)

Désactiver des plugins

export default createViteConfig({
    base: '/themes/custom/mon-theme/assets',
    iconfont: false,    // désactive la génération d'iconfont
    svgstore: false,    // désactive la génération du sprite SVG
    liveReload: false,  // désactive le live reload
    imagemin: false,    // désactive l'optimisation d'images
})

Personnaliser des plugins

export default createViteConfig({
    base: '/themes/custom/mon-theme/assets',
    localConfig,
    iconfont: {
        svgs: 'src/images/icons/**/*.svg',
        fontName: 'iconfont',
        scssDir: 'src/scss/base/iconfonts',
        iconClassName: 'icon',
        fontPath: '@/iconfonts/',
    },
    svgstore: {
        srcDir: 'src/images/icons-sprite',
        targetFile: 'src/images/sprite.svg',
        symbolId: '[name]',
    },
    liveReload: ['../templates/**/*.twig'],
    imagemin: true,
    entries: [
        'src/scss/*.scss',
        'src/scripts/*.js',
        'src/scripts/*.ts',
        'src/iconfonts/*.{woff2,woff}',
        'src/images/**/*.{png,jpeg,jpg,gif,svg}',
    ],
    entriesIgnore: [
        'src/images/icons/**/*.svg',
        'src/images/icons-sprite/**/*.svg',
    ],
})

VitePluginIconfont(options)

Plugin Vite qui convertit des icônes SVG en font (SVG → TTF → WOFF/WOFF2) et génère les fichiers SCSS correspondants via des templates Nunjucks. Inclut un cache basé sur le hash des fichiers sources pour éviter les rebuilds inutiles.

| Option | Type | Défaut | Description | |---|---|---|---| | svgs | string | src/images/icons/**/*.svg | Glob pattern des fichiers SVG sources | | fontName | string | iconfont | Nom de la font générée | | scssDir | string | src/scss/base/iconfonts | Dossier de sortie des fichiers SCSS | | iconClassName | string | icon | Nom de la classe CSS de base | | fontPath | string | @/iconfonts/ | Chemin relatif vers la font dans le CSS |

VitePluginSvgstore(options)

Plugin Vite qui fusionne des fichiers SVG en un sprite SVG unique, optimisé avec SVGO.

| Option | Type | Défaut | Description | |---|---|---|---| | srcDir | string | src/images/icons-sprite | Dossier source des SVG | | targetFile | string | src/images/sprite.svg | Fichier de sortie du sprite | | symbolId | string | [name] | Pattern pour l'id des symboles ([name] sera remplacé) |

Utilisation standalone des plugins

Les plugins peuvent être utilisés indépendamment de la factory :

import { VitePluginIconfont, VitePluginSvgstore } from '@absolu/assets-toolkit'
import { defineConfig } from 'vite'

export default defineConfig({
    plugins: [
        VitePluginIconfont({
            fontName: 'my-icons',
            scssDir: 'src/scss/icons',
            iconClassName: 'icon',
        }),
        VitePluginSvgstore({
            srcDir: 'src/sprites',
            symbolId: 'icon-[name]',
        }),
    ],
})

Licence

MIT