React-Based NPM Packages for Common Components: Setup, Maintenance, and Deployment

Daniel Mark John
3 min readMar 24, 2023

--

Introduction

As the React ecosystem continues to grow, developers often find themselves looking for reusable components to speed up development and maintain a consistent look and feel across applications. In this article, we’ll explore React-based NPM packages for common components, focusing on the setup, maintenance, and deployment to a private NPM repository. We’ll also cover semantic versioning, web security, and the installation process for these packages in a React app.

Setting Up a React-Based NPM Package

  1. Create a new project folder: Start by creating a new directory for your React component library project.
mkdir react-component-library
cd react-component-library

2. Initialize a new NPM package: Run npm init and fill in the required fields to create your package.json file.

3. Install dependencies: Since we are building a React-based library, we’ll need to install React and ReactDOM as peer dependencies.

npm install --save-dev react react-dom

4. Set up your build system: Popular build systems for React components include Webpack, Rollup, and Parcel. We’ll use Rollup for this example.

npm install --save-dev rollup rollup-plugin-peer-deps-external rollup-plugin-babel babel-preset-react

5. Configure your build: Create a rollup.config.js file in your project's root directory and configure it to build your React components.

6. Develop your components: In a src directory, create and export the React components you want to include in your library.

Maintaining Your React-Based NPM Package

  1. Use Git for version control: Initialize a Git repository in your project folder and commit your changes regularly to keep track of your component library’s development.
  2. Write unit tests: Create unit tests for your components using popular testing libraries like Jest and React Testing Library to ensure the reliability of your library.
  3. Use semantic versioning: Follow semantic versioning principles by updating the version number in your package.json file according to major, minor, and patch changes.
  4. Follow best practices for web security: Secure your component library by sanitizing user inputs, using HTTPS for network communication, and following the principle of least privilege.

Deploying to a Private NPM Repository

  1. Set up your private NPM repository: You can use services like NPM Enterprise, GitHub Package Registry, or a self-hosted repository using Verdaccio.
  2. Configure your NPM client: Log in to your private repository using the npm login command or by updating your .npmrc file with the appropriate credentials and registry URL.
  3. Publish your package: Update the name and version fields in your package.json file, then run the npm publish command to deploy your package to the private repository.

Using Your React-Based NPM Package in a React App

  1. Install the package: Add your component library to your React project by running the npm install command followed by the package name.
npm install @your-private-registry/your-package-name

2. Import and use your components: Import your components from your library in your React app and use them as needed.

import { CustomButton } from '@your-private-registry/your-package-name';

function App() {
return (
<div>
<CustomButton>Click me!</CustomButton>
</div>
);
}

Conclusion

Creating, maintaining, and deploying React-based NPM packages for common components allows for code reusability, streamlines development, and ensures consistency across applications. By following best practices for setup, maintenance, deployment

About Author

A Frontend architect with a strong focus on mastering the latest frontend frameworks, including React and Angular. With a lot of passion for creating visually captivating, responsive web applications and expertise in React and Angular, inspires me to build efficient, scalable, and high-performance web solutions. Over the years I have adapted to the evolving frontend landscape has made me an invaluable asset to any team seeking a specialist in cutting-edge frontend frameworks.

--

--

Daniel Mark John
Daniel Mark John

No responses yet