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

from-submodules-to-monorepo

v1.2.0

Published

Utility to transform a big project with many submodules into a single monorepo

Downloads

17

Readme

What is this?

This utility transforms a big project with many submodules into a single monorepo.

The purpose is to keep the commit history "intact" while consolidating everything into one repository.

⚠ Disclaimer ⚠

Use at your own risk!
This script is highly experimental and may cause irreversible damage, including but not limited to data loss, corruption of repositories, or deletion of your entire project. I will not be held responsible or liable for any damages, errors, or losses caused by using this solution. Always ensure you have proper backups before proceeding.

Example

Imagine this is the current project:

MySuperProject/README.md       [file]
MySuperProject/WebApplication1 [submodule]
MySuperProject/ClassProject1   [submodule]
MySuperProject/ClassProject2   [folder]

The expected result would be:

MySuperProject/README.md       [file]
MySuperProject/WebApplication1 [folder]
MySuperProject/ClassProject1   [folder]
MySuperProject/ClassProject2   [folder]

Is that so hard?

Maybe not if you have only 2 submodules. But if you have 100+ submodules, it becomes a very daunting task.

Every submodule will be moved into a nested folder to be merged with the main repository.

How to use?

See USAGE.md for more

What does perform-transformation.js do?

  • It checks out a new branch in the main repository.
  • For every submodule in the main repository, it:
    • Checks out a new branch in the submodule repository.
    • Creates a directory with the same name as the submodule inside the submodule repository.
    • Moves everything in the submodule repository into the newly created directory.
    • Commits and pushes changes to the submodule repository origin.
    • Removes the submodule from the main repository.
    • In the main repository: pulls from the submodule repository origin.

Is it safe?

No! It might delete all your data. Back up everything and proceed with extreme caution.

What is under the hood?

  • Some Node.js code that performs the transformation.
  • Dangerous operations — handle with care!