The various kinds of templates in SAO

SAO was designed to support as many kinds of template as possible, currently it supports:

  • local directory
  • npm package
  • git repo

local directory

Most likely you will only use local directory for testing purpose:

sao ./path/to/template
sao /absolute/path/to/template

It works on windows too:

sao c://path...

npm package

The most common way to share a template is publishing it on npm, prefixing the package name with template-.

sao nm
sao template-nm
# these two are equivalent
# it will use `template-nm` on npm

We prefix it to prevent from package naming conflict, but you can still use desired package name without prefix if you like:

sao npm:my-awesome-template

Use the special keyword npm: so we won’t prefix my-awesome-template with template- , instead we use the package my-awesome-template directly from npm.

Package name also supports versioning:

sao nm@0.2.1

This will make SAO install template-nm@0.2.1 if it’s not yet cached on your machine. To skip the cached template run sao nm@0.2.1 --install instead.

git repo

The easiest way to share your template is via git repo:

sao egoist/template-nm 

This will download (if not yet cached) the repo to ~/.sao/repos/egoist::template-nm directory, and then generate project from it.

Of course it supports git branch and tags too:

sao egoist/template-nm#dev
sao egoist/template-nm@v0.2.1

By default, we assume that the git repo host is GitHub, but you may use GitLab or BitBucket too:

sao gitlab:user/repo
sao bitbucket:user/repo

For private repos, we can’t download it directly, instead we usegit clone :

sao gitlab:user/private-repo --clone

What if the package/repo is not an SAO template?

When the source does not have an sao.js and a template folder in its root directory, it’s not a valid SAO template. In this case we simply copy the source to target path.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.