The objective of this project is to demonstrate how a Typescript project can be used to build an NPM module that can be published to the NPM registry so that it can be used from other Typescript projects without the need to install additional typings.
This project needs Typescript, to install Typescript:
npm install -g typescript
The project also used Gulp:
npm install -g gulp
TSLint is also required:
npm install -g tslint
Mocha:
npm install -g mocha
Typings:
npm install -g typings
After cloning this project and ensuring global dependencies are installed, execute:
npm install
typings install
This will install all the dev dependencies of the project.
To build the project from Visual Studio Code, Press Cmd + Shift + B
(or Control + Shift + B
on Windows). This will build the project and execute the test cases.
To debug the project from Visual Studio Code, set a break point in a Mocha spec file, then Press Cmd + Shift + D
(or Control + Shift + D
on Windows). Then select "Run mocha" from the debug menu and start debugging. This will hit your breakpoint and stop.
To build the project:
gulp pack
The above command will generate a package file that is ready to be consumed by another Typescript project.
- Go to your home directory (or another directory of your choice) and copy the generated file from
npm pack
to this new directory
cd ~
mkdir moduletest
cd moduletest
cp ../tsc-seed/tsc-seed-1.0.0.tgz .
- Now initialize a package.json file
$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.
See `npm help json` for definitive documentation on these fields
and exactly what they do.
Use `npm install <pkg> --save` afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.
name: (moduletest)
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to /Users/nocturne/moduletest/package.json:
{
"name": "moduletest",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
Is this ok? (yes)
- Initialize the Typescript project file
$ tsc --init
- Install the package
$ npm install tsc-seed-1.0.0.tgz
Now, the module can be used from a new file. Create a file called index.ts in Visual Studio Code:
import * as MyModule from "tsc-seed";
const calculator = new MyModule.Arithmetic.Calculator();
console.log(calculator.add(1, 2));
- Compile the file through the command line
$ tsc
- Execute the generated .js file
$ node index.js
The output should be:
3