No npm Install

If you clone the Light School website and run the build script, it just works. There is no npm install step. No waiting for hundreds of packages to download. No node_modules folder with thousands of files. You run one command and the site builds.

This is because the build script only uses modules that come built into Node.js. File reading, file writing, path handling, directory creation. Node.js already knows how to do all of these things. We did not need to bring in outside code.

Why This Matters

Dependencies break. Not on purpose, and usually not right away. But over time, packages get abandoned, APIs change, and version conflicts creep in. I have seen projects where running npm install produces a wall of warnings about deprecated packages and security issues. The project still works, but it feels fragile. Like it could stop working any day.

With zero dependencies, there is nothing to go out of date. As long as Node.js exists (and it will for a very long time), the build script will work. You could come back to this project in five years and build the site on the first try.

What We Gave Up

There are things that packages do well. CSS minification, image optimization, live reloading during development. We do not have any of those. The CSS gets combined but not minified. Images are served as-is. When I make a change, I rebuild manually.

These are real tradeoffs. A more sophisticated build system would produce smaller files and a smoother development experience. But the site loads fast enough as it is, and the build takes under a second. The tradeoffs are worth it for us right now.

The Weight of Convenience

Every dependency you add is a promise you are making to the future. You are saying: this package will still work when I need it. Its maintainers will keep it updated. Its API will stay stable. Its dependencies will not conflict with mine.

Sometimes that promise is easy to keep. Sometimes it is not. I have learned to ask a different question before adding a package: can I write this myself in under fifty lines? If the answer is yes, I probably should.

Traveling Light

There is a feeling that comes with a project that has no dependencies. It is hard to describe exactly. The closest word I have is "light." Everything is visible. Everything is under our control. Nothing can surprise us from the outside.

For a project called Light School, that feels right.