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-css-no-bundle

v4.0.2

Published

vite plugin for no bundle css

Downloads

127

Readme

CSS-No-Bundle for Vite

⚡ Use [Vite] for building without the bundling part.

🔥 Supports outputting independent css files for better tree shaking.

🚩 Supported output formats: es, cjs.

📝 vite-plugin-css-no-bundle requires Vite 5.

✅ Only support vite lib mode.

✅ Support style file: *.css, *.scss.

Installation

npm install -D vite-plugin-css-no-bundle
yarn add -D vite-plugin-css-no-bundle
pnpm install -D vite-plugin-css-no-bundle

Example

Here is a simple example to illustrate the effect of the plugin.

Project:
App.ts (import "app.css";)

app.css

When this plugin is not used, compiled result:

styles.css

App.js

Caller needs to manually import styles.css

When use vite-plugin-css-no-bundle, compiled result:

App.js (import "app.css.js";)

app.css.js (import "app.css";)

app.css

Advantage

More compiler friendly, supports on-demand loading, and does not require the caller to manually import style files.

Usage

Only support lib mode.

Usually, you can used with vite-plugin-css-no-bundle v4 plugin.

You need to put your local css file inside build.lib.entry.

import { defineConfig } from 'vite';
import noBundlePlugin from 'vite-plugin-no-bundle';
import noBundleCSSPlugin from 'vite-plugin-css-no-bundle';
import glob from 'fast-glob';

export default defineConfig({
  build: {
    lib: {
        formats: ['es', 'cjs'],
        entry: await glob('**/*.{.js,ts,tsx,css}', {
            cwd: path.resolve(__dirname, 'src'),
            absolute: true,
            onlyFiles: true,
        }),
        fileName: ()=> '[format]/[name].js',
    },
  },
  plugins: [
      noBundlePlugin(),
      noBundleCSSPlugin(),
  ],
});

Css in JS

Full support @linaria/core.

Supports using CSS in JS in lib mode with zero dependencies.

For more information, please refer to https://github.com/callstack/linaria

Demo

import {defineConfig} from 'vite';
import noBundlePlugin from 'vite-plugin-no-bundle';
import noBundleCSSPlugin from 'vite-plugin-css-no-bundle';
import dts from 'vite-plugin-dts';
import wyw from '@wyw-in-js/vite';
import * as path from 'path';
import glob from 'fast-glob';

export default defineConfig({
    mode: 'dev',
    build: {
        lib: {
            formats: ['es', 'cjs'],
            entry: await glob('**/*.{.js,ts,tsx,css}', {
                cwd: path.resolve(__dirname, 'src'),
                absolute: true,
                onlyFiles: true,
            }),
            fileName: ()=> '[format]/[name].js',
        },
        outDir: '.',
        minify: false,
    },
    plugins: [
        wyw({
            include: ['**/*.{ts,tsx}'],
            babelOptions: {
                presets: ['@babel/preset-typescript', '@babel/preset-react'],
            },
        }),
        noBundlePlugin(),
        noBundleCSSPlugin(),
        dts({
            include: [path.resolve(__dirname, 'src')],
            entryRoot: path.resolve(__dirname, 'src'),
            root: '.',
            outDir: ['es','cjs'],
            strictOutput: true,
        }),
    ],
});