Skip to content

silvermine/generator-typescript

Repository files navigation

Silvermine TypeScript Project Yeoman Generator

NPM Version License Build Status Dependency Status Dev Dependency Status

What is it?

A Yeoman generator for creating TypeScript projects.

Why?

This generator can create starter code and configuration for back-end and front-end TypeScript projects. Using it as a starting point for new TypeScript projects can help create consistency in coding standards, project structure, and configuration across your projects, and save you much time when setting up a new TypeScript project.

Benefits of using this generator

Using this generator to create TypeScript projects can save hours in setup, configuration, and debugging. Generated projects include:

  • Tests, with code coverage reports. Generated projects have example tests that include code coverage reports. Code coverage reports show coverage of the original TypeScript code by using source maps.
  • Coding standards for clean TypeScript. It makes use of strict but carefully considered coding standards and TypeScript compiler configuration that helps ensure TypeScript code is written in a clean, clear, and readable way.
  • CommonJS, UMD, and ES Module compatibility. Generated projects that are meant to be consumed by other projects (i.e. a library) support importing through CommonJS, UMD (if it's a front-end library), and ES Modules. TypeScript type definition files are generated automatically at build time.
  • Reasonable defaults for common configuration files. .gitignore, .npmignore, package.json, webpack.config.js, LICENSE, and README files are included.

How do I use it?

First, install Yeoman globally if it's not already installed:

npm i -g yo

Then, install this generator:

npm i -g @silvermine/generator-typescript

Finally, create your project folder and run the generator in its root:

mkdir YOUR_DIR_NAME && cd YOUR_DIR_NAME
yo @silvermine/typescript

What is a library?

One of the questions that the generator prompts you with is: "Is this a library?". Answering "Yes" means that the project you are generating is meant to be published and consumed by other projects. For example, underscore and lodash are libraries because they are meant to be consumed by other projects.

Therefore, generated libraries include configuration to output distributable files like CommonJS and EcmaScript Module compatible JavaScript, and TypeScript types. If your project is not a library, these distributable file outputs are not necessary and so are not included in your generated project. A non-library project is something like a website, an app, or a server that serves a REST API.

License

This software is released under the MIT license. See the license file for more details.