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

rollup-plugin-preserve-use-client

v3.0.1

Published

A Rollup plugin to preserve 'use client' directives for React 18 components.

Downloads

328

Readme

rollup-plugin-preserve-use-client

Introduction

rollup-plugin-preserve-use-client is a Rollup plugin designed to preserve the 'use client' directive when bundling React 18 components. This plugin ensures that React 18 server and client components are clearly distinguished by maintaining the 'use client' directive where needed.

Background

This plugin was created to solve an issue I faced while developing an npm module that provides both server and client component UIs using React 18. Rollup, by default, removes all directives, which led to the removal of the 'use client' directive from my components. Initially, I tried using rollup-plugin-preserve-directives to solve this, but that plugin required setting preserveModules: true in Vite's output configuration. This caused conflicts with CSS injection plugins, breaking all module.css imports. Thus, I created this plugin to preserve the 'use client' directive without needing to enable preserveModules, ensuring better compatibility with existing CSS solutions.

Installation

npm install rollup-plugin-preserve-use-client --save-dev

Usage

Add the plugin to your Rollup configuration file:

import preserveUseClientDirective from 'rollup-plugin-preserve-use-client';

export default {
  plugins: [preserveUseClientDirective()],
};

Key Features

No Need for preserveModules: true Unlike other plugins, rollup-plugin-preserve-use-client does not require you to set preserveModules: true. This helps avoid issues with CSS module imports and ensures seamless bundling.

React 18 Compatibility: Ensures that 'use client' directives are maintained, making it easier to differentiate between server and client components in your React 18 projects.

Contributing

Contributions are welcome! Please feel free to submit a bug report or feature request via GitHub issues.

License

Released under the MIT License.