getting started
Starting a new project or package often involves a lot of boilerplate and repeated actions. I typically start with a simple npm init -y
regardless of if I intend to publish my project to npm. The npm
CLI tool has great conventions around semantic versioning. There are a lot of options out there for generators, and I am pretty fond of module-init
in most cases, though I do end up modifying its output a lot.
You might like to start minimally and give yourself a chance to rethink every choice. Even if you want to stay lean, and not use a project generator, there are some standard files you likely want in every new repository.
README.md
Perhaps the most important file in your project, a good README goes a long way to improving adoption. I like to develop the Usage
section early. This helps me define what it is I want to build. Once you have docs on how to use the package, you are ready to dive in on that index.js
.
generator-standard-readme
Scaffold out a Standard Readme
The Standard Readme project provides a great skeleton to make sure you logically include useful details. The prompts are a bit verbose, and I wish it took advantage of reading an existing package.json
or ~/.npmrc
to skip defaults, but still a great utility as-is.
alias standard-readme='npx -p generator-standard-readme -p yo yo standard-readme'
.gitignore
You already ran git init
, right? Seriously, use version control everywhere!
goops
A CLI tool that automagically adds or recommends the best .gitignore for your project
joe by karan
🏃 A .gitignore magician in your command line
CONTRIBUTING.md
and code-of-conduct.md
Helping users of your project convert into contributors should be a goal, and these files set the stage for how you like your project to be run.
contribs
Generate boilerplate open source contributing guidelines.
conduct
🖖 Generate a Code of Conduct for your project
LICENSE
If you start at GitHub, you are probably used to this file just being there. But I’m often several commits in and ready to push before I realize I need to grab a license file from another local project.
lice
An open source license generator and license viewer.
more p2p please
Here is a follow-up tutorial from the last link roundup that walks you thru building a decentralized, peer-to-peer Photos app with Beaker and Dat. Additionally, Beaker has a few tutorials in their docs worth checking out.
interesting projects
ginnx
🎗 Generate Nginx configuration files based on the user input
If you aren’t dockerizing all the things, this seems like an excellent way to deal with a rather tedious routine.
async-collection
Collection of async functions
I use several of these packages on nearly every module I create. This is a great solution for a slimmer async
.
exa
Replacement for ‘ls’ written in Rust.
I’m not ready to completely replace ls
, but I have updated my standard aliases to take advantage of the improved colors and formatting from this binary.
alias l='exa -la'
alias ll='exa -l'
Express Gateway
A microservices API Gateway built on top of ExpressJS
Another project that turns a simple manifest file into a robust service, looking forward to playing with this in more depth soon.