21
The quickest way to test changes in your forked React library
I found that I was repeating myself in a fairly easy-to-automate task: create a React sandbox so I could easily test my projects in an isolated environment.
Then, I rolled up my sleeves and end up creating my first command-line application! It's called create-sandbox
✨
The first thing that might come to mind is "how is it different from codesandbox.io?"
Well -- codesandbox.io, despite being a great project that I do use extensively, only allows the installation of published packages. Not only that, it does not let you browse node_modules
, making it impossible to change the source code.
It also does not support linking, therefore you cannot iterate changes in your library in real-time.
You can run it like that:
npx create-sandbox <source>
Where source
is either a Git repository URL (it doesn't matter if it's SSH or HTTPS) or an existing folder in your file system.
For testing, I'll pick my own use-data-structures library. As one can guess, it exposes a few hooks that enables powerful data structures inside React. Let's go!
➜ npx create-sandbox [email protected]:zaguiini/use-data-structures.git
✔ Cloned successfully
✔ React sandbox created successfully
✔ Project dependencies installed
✔ Dependencies linked
Done!
Now enter the `use-data-structures-sandbox` directory,
run `yarn start` and enjoy your development sandbox!
And 💥! My sandbox is created!
When running yarn start
in my sandbox folder, along with yarn start
in my forked project, I can test my changes in real-time!
This is my usage in the sandbox:
And this is what I see in the browser:
Now look what happens when I change the peek
method return value in my forked project to blue da ba dee da ba di
:
Pretty cool, right?! It only took me a single command to clone the repository, create a sandbox, link the forked project and start iterating over it. A cool thing is that create-sandbox
uses whatever project manager the forked package uses, be it NPM or Yarn.
This is just the beginning. Right now, create-sandbox
only works on simple React projects. In the future, monorepos will be supported.
Not only that -- I'm planning to support other JavaScript frameworks, such as Vue, Angular and even Svelte, if possible!
The future looks bright, indeed. If you're wondering how I did that, here's the repository. It has the full roadmap, along with documentation! Come join us!
Thanks for reading! Let me know if there are any questions.
21