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

typolar-cli

v0.5.1

Published

CLI for Typolar projects

Readme

typolar-cli

CLI for Typolar projects

Install

npm i -g typolar-cli

Usage

typolar -h

Output:

Usage: typolar [options] [command]

Options:
  -V, --version               output the version number
  -w, --wrokdir <dir>         change work directory
  --rc <filepath>             set typolarrc filepath
  -v, --verbose               enable verbose output
  -h, --help                  output usage information

Commands:
  new [options] <name>        create a new app
  show [options]              show app info
  make:model <name>           generate a model file
  make:route <name>           generate a route file
  make:service <name>         generate a service file
  make:test [options] <name>  generate a test file
  make:graph <name>           generate a graphql type file
  make:resolver <name>        generate a graphql resolver file

Create a typolar project:

Usage: typolar new [options] <name>

create a new app

Options:
  --registry <taobao|url>      set project level npm registry
  --no-tslint                  no tslint integration
  --no-prettier                no prettier integration
  --eslint                     add eslint integration
  --graphql                    add graphql integration
  --docs                       add documentation generator
  --vscode                     add vscode integration
  --conv <camel|pascal|kebab>  file name convention (default: "kebab")
  --no-install                 skip npm install
  --no-update                  skip npm update
  --no-hide                    do not hide config files in vscode
  --no-init                    skip git init
  --no-hook                    do not add git hook
  --no-commit                  skip auto initial commit
  --clean                      no example code
  -h, --help                   output usage information

e.g.

typolar new myapp --docs --vscode --eslint --graphql --registry=taobao --clean

Project structure:

myapp/
├── .editorconfig
├── .env
├── .env.template
├── .eslintignore
├── .eslintrc.json
├── .gitattributes
├── .gitignore
├── .npmrc
├── .prettierignore
├── .prettierrc
├── .typolarrc
├── .vscode/
├── config/
│   ├── app.json
│   ├── graphql.json
│   └── logger.json
├── docs/
├── lib/
├── package.json
├── src/
│   ├── app.ts
│   ├── graphql/
│   │   ├── resolvers/
│   │   └── types/
│   ├── index.ts
│   ├── models/
│   ├── routes/
│   └── services/
├── tests/
│   └── tslint.json
├── tsconfig.json
├── tsconfig.prod.json
├── tslint.json
└── views/

With example code:

myapp/
├── .editorconfig
├── .env
├── .env.template
├── .eslintignore
├── .eslintrc.json
├── .gitattributes
├── .gitignore
├── .npmrc
├── .prettierignore
├── .prettierrc
├── .typolarrc
├── .vscode/
├── config/
│   ├── app.json
│   ├── graphql.json
│   └── logger.json
├── lib/
│   ├── app.js
│   ├── app.js.map
│   ├── graphql/
│   │   ├── resolvers/
│   │   │   ├── comment.js
│   │   │   ├── comment.js.map
│   │   │   ├── post.js
│   │   │   ├── post.js.map
│   │   │   ├── query.js
│   │   │   ├── query.js.map
│   │   │   ├── user.js
│   │   │   └── user.js.map
│   │   └── types/
│   │       ├── comment.js
│   │       ├── comment.js.map
│   │       ├── post.js
│   │       ├── post.js.map
│   │       ├── query.js
│   │       ├── query.js.map
│   │       ├── schema.js
│   │       ├── schema.js.map
│   │       ├── user.js
│   │       └── user.js.map
│   ├── index.js
│   ├── index.js.map
│   ├── models/
│   │   ├── address.js
│   │   ├── address.js.map
│   │   ├── comment.js
│   │   ├── comment.js.map
│   │   ├── company.js
│   │   ├── company.js.map
│   │   ├── post.js
│   │   ├── post.js.map
│   │   ├── user.js
│   │   └── user.js.map
│   ├── routes/
│   │   ├── home.js
│   │   └── home.js.map
│   └── services/
│       ├── blog.js
│       └── blog.js.map
├── package-lock.json
├── package.json
├── src/
│   ├── app.ts
│   ├── graphql/
│   │   ├── resolvers/
│   │   │   ├── comment.ts
│   │   │   ├── post.ts
│   │   │   ├── query.ts
│   │   │   └── user.ts
│   │   └── types/
│   │       ├── comment.ts
│   │       ├── post.ts
│   │       ├── query.ts
│   │       ├── schema.ts
│   │       └── user.ts
│   ├── index.ts
│   ├── models/
│   │   ├── address.ts
│   │   ├── comment.ts
│   │   ├── company.ts
│   │   ├── post.ts
│   │   └── user.ts
│   ├── routes/
│   │   └── home.ts
│   └── services/
│       └── blog.ts
├── tests/
│   ├── home.spec.ts
│   └── tslint.json
├── tsconfig.json
├── tsconfig.prod.json
├── tslint.json
└── views/
    └── home.ejs

Minimal structure(no tslint/eslint/prettier/vscode/docs/graphql)

typolar new myapp --no-tslint --no-prettier --no-init --no-install --clean
myapp/
├── .editorconfig
├── .env
├── .env.template
├── .gitattributes
├── .gitignore
├── .typolarrc
├── config/
│   ├── app.json
│   └── logger.json
├── lib/
├── package.json
├── src/
│   ├── app.ts
│   ├── index.ts
│   ├── models/
│   ├── routes/
│   └── services/
├── tests/
├── tsconfig.json
├── tsconfig.prod.json
└── views/

NPM Commands

Start app in dev mode

npm run dev

Start app in dev mode and watch source files change for restarting

npm run watch

Start app in dev mode and watch source files change for restarting

npm run watch

Run tests

npm test

Build sources

npm run build

Start app in production mode(requires a successful build)

npm start

Optional:

Build docs(requires --docs option set)

npm run docs

Format all soruce files(requires --no-prettier omitted)

npm run format

Lint all soruce files(requires --no-tslint omitted)

npm run lint

Git hooks

By default a pre-commit git hook is installed. It will lint your staged files before commit. To disable it, pass --no-hook option

If you set --no-init which tells the cli to skip git init for your project, hooks will also be skipped. Same for --no-tslint which skips tslint integration

VSCode

Requires --vscode option set

By default, a couple of files are pre-configured to be excluded from vscode's explorer view to make your workspace neat. Set --no-hide option if you think it unneccessary

Debug

Three launch configs:

  • Launch Program (run in test mode)
  • Watch Debug (run in test mode and watch source files change)
  • Mocha Tests (debug test cases)

Extensions

Open extensions panel, type in @recommended, see Workspace Recommendations

All extensions are pre-configured in your workspace

Highly recommended

Recommended

Tasks

  • run:dev
  • run:watch
  • build:lib (default build task)
  • build:docs
  • test:all (default test task)
  • test:current
  • lint:all
  • format:all
  • format:dirty
  • clean:docs
  • clean:build
  • view:docs

Config

All config files are in config folder(in your project root directory). You can override almost all files with env vars.

e.g.

APP_PORT=8080 npm run dev

Alternatively you may set envs in the .env file(in your project root directory). Available vars are listed in .env.template

[global]
# ENV_FILE
# CONFIG_FILE

[app]
# APP_HOST
# APP_PORT
[app.router]
# APP_ROUTER_STYLE
# APP_ROUTER_BASEURL
# APP_ROUTER_MOCK
# APP_ROUTER_PATH
[app.service]
# APP_SERVICE_BASEURL
# APP_SERVICE_REVIVER
# APP_SERVICE_REPLACER
[app.view]
# APP_VIEW_ENGINE
# APP_VIEW_PATH

[logger]
# LOG_HTTP_STYLE
# LOG_APPENDERS
# LOG_LEVEL
# LOG_STACK_PRETTY

[graphql]
# GRAPHQL_UI

You can extend existing configs or add new configs. See kuconfig

Framework

See typolar

License

See License