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

cra-to-next

v1.0.0

Published

Migrate parts of Create React App to NextJS step by step while being with both in production.

Downloads

4

Readme

This project was bootstrapped with Create React App and Next.js with create-next-app.

Motivation

Idea on how to easier migrate parts of Create React App to NextJS step by step while being with both in production in the meantime.

Problem

We want to share components between two projects and being able to run both of them at the same time. Problem occurs when we want to import code from outside the src of the current project.

Module not found: You attempted to import ../../components/Component which falls outside of the project src/ directory. Relative imports outside of src/ are not supported.

How it works?

With the help of react-app-rewire-alias we alias the /next-js folder of NextJS to Create React App. Therefore we can reuse the same components while migrating from one to another.

config-override.js for create-react-app:

module.exports = function override(config) {
  return alias({
    'next-js': '../next-js',
  })(config);
};

Note: In one-folder example we alias the /components folder.

Folder structure

Repository contains two different approaches: two-folder-parallel-structure with Create React App and NextJS in parallel and one-folder-with-second-inside-structure with NextJS as primary and Create React App as secondary folder.

Getting Started

Depending on the folder structure go into desired folder: two-folder-parallel-structure or one-folder-with-second-inside-structure.

To run Create React App the development server (.env sets port 3001):

cd create-react-app
npm install
npm run start
# or
yarn
yarn dev

To run the NextJS development server (by default port 3000):

cd next-js
npm install
npm run dev
# or
yarn
yarn dev

Routing example

Example with two-folder-parallel-structure shows a case when we migrated only home page while /cats and /dogs routes are a rewrite to create-react-app.

NextJS next.config.js in the root handles rewrites of the non-migrated routes to Create React App.

// next.config.js

module.exports = {
  async rewrites() {
    return [
      {
        source: '/:path*',
        destination: '/:path*',
      },
      {
        source: '/:path*',
        destination: `http://localhost:3001/:path*`, // Rewrite non-migrated routes to Create React App
      },
    ];
  },
};

Keep in mind is no problem to handle case like this also in production.

Fun Fact: Hot Reloading

While changing component that both of the applications are using (one-folder-with-second-inside-structure/src/components/Component.js) to "hola mikko" you can see hot reloading in both Create React App and NextJS applications at the same time. Ole!