Compare commits
46 Commits
Author | SHA1 | Date | |
---|---|---|---|
33c83de1fb | |||
07a56fcaca | |||
7bc986251f | |||
cdde7da5f9 | |||
82c00fe444 | |||
93682e9ec4 | |||
d339da7e11 | |||
8b51992959 | |||
cb3bfaf438 | |||
91b7317b80 | |||
400b193210 | |||
7f6a6434d2 | |||
a1414877a1 | |||
a4927f9c17 | |||
264c3d95fd | |||
fd06aa04f4 | |||
a576872471 | |||
333b59c37e | |||
054b7dca2b | |||
33209773c8 | |||
625cadea5e | |||
de05001f3e | |||
5aa10261e5 | |||
070574c8d7 | |||
a304f34f31 | |||
26b5db3782 | |||
dadad3fa96 | |||
2ab35db571 | |||
4a17953298 | |||
8c633b3c30 | |||
e100a6e026 | |||
3e7148c938 | |||
3554e2543d | |||
44a86542ec | |||
b63d2edd29 | |||
a4e0112767 | |||
b40837b6a7 | |||
7ecb565de9 | |||
41a38aeb56 | |||
0be87e2f45 | |||
2edcb3947e | |||
51753df662 | |||
36c002581a | |||
db1cfe4746 | |||
2c254a2ecf | |||
425bc6150a |
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,4 +1,4 @@
|
|||||||
node_modules/
|
node_modules/
|
||||||
test/
|
test/
|
||||||
docs/
|
pages/
|
||||||
.DS_Store
|
.DS_Store
|
@ -1,10 +1,10 @@
|
|||||||
image: hosttoday/ht-docker-node:npmts
|
image: hosttoday/ht-docker-node:npmci
|
||||||
|
|
||||||
stages:
|
stages:
|
||||||
- test
|
- test
|
||||||
- release
|
- release
|
||||||
- trigger
|
- trigger
|
||||||
- page
|
- pages
|
||||||
|
|
||||||
testLEGACY:
|
testLEGACY:
|
||||||
stage: test
|
stage: test
|
||||||
@ -45,3 +45,15 @@ trigger:
|
|||||||
- tags
|
- tags
|
||||||
tags:
|
tags:
|
||||||
- docker
|
- docker
|
||||||
|
|
||||||
|
pages:
|
||||||
|
image: hosttoday/ht-docker-node:npmpage
|
||||||
|
stage: pages
|
||||||
|
script:
|
||||||
|
- npmci command npmpage --host gitlab
|
||||||
|
only:
|
||||||
|
- tags
|
||||||
|
artifacts:
|
||||||
|
expire_in: 1 week
|
||||||
|
paths:
|
||||||
|
- public
|
||||||
|
15
.travis.yml
15
.travis.yml
@ -1,15 +0,0 @@
|
|||||||
language: node_js
|
|
||||||
node_js:
|
|
||||||
- 4.3.1
|
|
||||||
- stable
|
|
||||||
deploy:
|
|
||||||
provider: npm
|
|
||||||
email: npm@lossless.digital
|
|
||||||
api_key:
|
|
||||||
secure: k075QdAcmEdmAoVaP5vclLnZmhbZB39v85VIUMWAKXbIAU+liHrYZRlIEYfAaIUrf6sha+zAo/U/vjAN7c5ArB7J/HjCLJ3lsi2fWtaSRlYQrYX9/EhU0S+YZjRE8Jrn4hGTcce6I2mANBnEzvzlXrlKaqVvSqOqTO9nJ5aDBCGa5XT3EwlHKkRlAlL3ZOLrRg38R343E8ifZBsbn9G0e+RgDt0sic3WD8NME9lpsQ/99UZKH00duHbhF9nme5Sjdh86y01hvsaBf+CLR4gfS2IntnrCSrZbETFrsOBUyMnJZDQ3qlrjcEaiTkpJ4iSIqr+ftwGMMD6S1MxCTPqkp64UIeMz2Tg41HqoaeIg7z8cF0APv6M9ZAdWhsU43GqsMe70dK900JZpQAkQxMf/6NpPpGfZug6TwqLYSIRzvjvNrhYfuyoGfXdAxrM3SJMkIq6rwE+T/y36kZaC3CrQRyNZypNz0vW1M9HLjJUi2vO0U/CDn8tvi1p6ChrDXDfV3H2UIAMHFlAF+GrT7dMWwD+p+d8mc9gpAFEF9zMqAIJamPhwboJxoHjKQrqrq5czNm75ETL77AzfnU6CfQlG5dTIFnGId8y0ZxXvtpBruDoyC1+ZF23MYZmb+ipxQZM2oLCjNLeL3aEePc/JlSm6Gn8w3sIkZTG261F0XZxdApw=
|
|
||||||
on:
|
|
||||||
tags: true
|
|
||||||
repo: pushrocks/npmts
|
|
||||||
env:
|
|
||||||
global:
|
|
||||||
secure: kPKBMnEKoC+K5dXpl11NhuK3LSp0c0fRO60Akj3QeQBjUWnVAcF0Ht30c31y0lnJaMEzXhmUIKdR7RQnlmw5be4TYGINzY7FD3Dcv7o+HO1ZQrkpMWSu46jF6ZJer9moGjZ8e0rX8wZyB9SqsXYlwWRzqvxfOVxQfTvU3BEnJKHbhq+R5JMJ8dwLBPNTJKMWKq85KNsjo3ap0BjxdBUoRLzvrn31VOPH30BkvmLGc5YiIz5QmITll/T2wmQKYTNT2qDlEJ729B8pYa3eNlCNi89AxsLDGCmEoJAVrPsyw5g+gAyBqZ1GRULy83UJbELUq7cse3MRLMSwCAm4f0INRAuqcyiKYJ4+LHd0NwKrFQ/dQ0pvyBTbbEjNemXaakkWH7S6F03UvF+u+tiQ7C97XH0CRsseGlm36zCkAClEhtWVWA4U0Q5c6zqRAAOYOI0xquXalRKPTJe7fCYewp2eqmlp8drt8MxancyKI/ynXNoR5vGFzDTSRoPjTlaYQPmbiH4+Nd5+6Qoj94PEIqghebIPDQo3C7vWts4WGccux5b2q524UgB63hjJQA6+GQOo1q4RibouS6WScn8/tW/ZOEP+sNhDfkeiZUIjye+Q3PyzonGHefgSQ8wBbsc8LOX0cKUcEFWr14nhdQ9ZeW+hrSSF04TbM4zGJPGcKhmT2UU=
|
|
118
README.md
118
README.md
@ -1,122 +1,28 @@
|
|||||||
# npmts
|
# npmts
|
||||||
Write npm modules with TypeScript without hassle. TypeScript ready. Fully ES6.
|
Write npm modules with TypeScript without hassle. TypeScript ready. Fully ES6.
|
||||||
|
|
||||||
## Status
|
## Availabililty
|
||||||
|
[](https://www.npmjs.com/package/npmts)
|
||||||
|
[](https://gitlab.com/pushrocks/npmts)
|
||||||
|
[](https://github.com/pushrocks/npmts)
|
||||||
|
[](https://pushrocks.gitlab.io/npmts/docs)
|
||||||
|
|
||||||
|
## Status for master
|
||||||
[](https://gitlab.com/pushrocks/npmts/commits/master)
|
[](https://gitlab.com/pushrocks/npmts/commits/master)
|
||||||
|
[](https://gitlab.com/pushrocks/npmts/commits/master)
|
||||||
[](https://david-dm.org/pushrocks/npmts)
|
[](https://david-dm.org/pushrocks/npmts)
|
||||||
[](https://www.bithound.io/github/pushrocks/npmts/master/dependencies/npm)
|
[](https://www.bithound.io/github/pushrocks/npmts/master/dependencies/npm)
|
||||||
[](https://www.bithound.io/github/pushrocks/npmts)
|
[](https://www.bithound.io/github/pushrocks/npmts)
|
||||||
|
[](https://nodejs.org/dist/latest-v6.x/docs/api/)
|
||||||
[](https://nodejs.org/dist/latest-v6.x/docs/api/)
|
[](https://nodejs.org/dist/latest-v6.x/docs/api/)
|
||||||
|
|
||||||
## What is NPMTS?
|
## Introduction
|
||||||
NPMTS is your friend when it comes to write, test, publish and document NPM modules written in TypeScript.
|
NPMTS is your friend when it comes to write, test, publish and document NPM modules written in TypeScript.
|
||||||
By default NPMTS will **bundle declaration files**. As a result npm module **code completion in editors like Visual Studio Code** works.
|
By default NPMTS will **bundle declaration files**. As a result npm module **code completion in editors like Visual Studio Code** works.
|
||||||
|
|
||||||
There is a docker image available that includes npmts to make CI a breeze:
|
There is a docker image available that includes npmts to make CI a breeze:
|
||||||
[hosttoday/ht-docker-node:npmts on Dockerhub](https://hub.docker.com/r/hosttoday/ht-docker-node/)
|
[hosttoday/ht-docker-node:npmts on Dockerhub](https://hub.docker.com/r/hosttoday/ht-docker-node/)
|
||||||
|
|
||||||
### Install
|
For further information read the docs.
|
||||||
First install npmts globally, then install the npmts-g locally.
|
|
||||||
|
|
||||||
> **npmts-g* checks if the global version of npmts suffices the modules requirements.
|
[](https://push.rocks)
|
||||||
If not it installs npmts locally in the right version during npm install.
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm install npmts -g # installs npmts globally
|
|
||||||
npm install npmts-g --save-dev # installs npmts-g checking tool as devDependency
|
|
||||||
```
|
|
||||||
|
|
||||||
Then add it to your package.json's script section to trigger a build:
|
|
||||||
|
|
||||||
```json
|
|
||||||
"scripts": {
|
|
||||||
"test": "(npmts)"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Default task execution order
|
|
||||||
|
|
||||||
1. **Config:** Check config in ./npmextra.json (Check out [npmextra](https://www.npmjs.com/package/npmextra))
|
|
||||||
1. **Clean:** Clean up from any previous builds (old js files)
|
|
||||||
1. **Check:** Check project for typings declaration in package.json, unused dependencies and missing dependencies
|
|
||||||
1. **Transpile:** Transpile TypeScript with **inline sourcemaps** and **declaration files** to ES target
|
|
||||||
1. **Documentation:** Create TypeDoc Documentation from TypeScript files
|
|
||||||
1. **Test:** Babelify ES6 to ES5 on the fly, instrumentalize ES5 JavaScript with istanbul and run tests with Mocha.
|
|
||||||
|
|
||||||
### npmextra.json
|
|
||||||
the npmts section in npmextra.json can be used to configure npmts.
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"npmts":{
|
|
||||||
"mode":"default",
|
|
||||||
"ts":{
|
|
||||||
"./customdir/*.ts":"./"
|
|
||||||
},
|
|
||||||
"tsOptions":{
|
|
||||||
"declaration":false,
|
|
||||||
"target":"ES6"
|
|
||||||
},
|
|
||||||
"cli":true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
| key | default value | description |
|
|
||||||
| --- | --- | --- |
|
|
||||||
| `"mode"` | `"default"` | "default" will do some default stuff, "custom" only does what you specify |
|
|
||||||
| `"ts"` | `{"./ts/*.ts":"./","./test/test.ts":"./test/"}` | allows you to define multiple ts portions |
|
|
||||||
| `"tsOptions"` | `{"target":"ES5", "declaration":"true"}` | specify options for tsc |
|
|
||||||
| `"cli"` | "false" | some modules are designed to be used from cli. If set to true NPMTS will create a cli.js that wires you dist files up for cli use. |
|
|
||||||
|
|
||||||
### TypeScript
|
|
||||||
by default npmts looks for `./ts/*.ts` and `./test/test.ts` that will compile to
|
|
||||||
`./dist/*.js` and `./test/test.js`
|
|
||||||
|
|
||||||
Use commonjs module system for wiring up files.
|
|
||||||
|
|
||||||
### Declaration files
|
|
||||||
**npmts** also creates declaration files like `./dist/index.d.ts` by default.
|
|
||||||
You can reference it in your package.json like this.
|
|
||||||
|
|
||||||
```json
|
|
||||||
"main": "dist/index.js",
|
|
||||||
"typings": ".dist/index.d.ts",
|
|
||||||
```
|
|
||||||
|
|
||||||
This is in line with the latest TypeScript best practices.
|
|
||||||
You can then import plugins via the TypeScript `import` Syntax
|
|
||||||
and tsc will pick up the declaration file automatically.
|
|
||||||
|
|
||||||
## Some notes:
|
|
||||||
#### Typings for third party modules that do not bundle declaration files
|
|
||||||
NPMTS no longer supports typings.json. Instead use the new TypeScript 2.x approach to typings using the @types/ npm scope.
|
|
||||||
|
|
||||||
#### Instrumentalize Code
|
|
||||||
npmts instrumentalizes (using istanbul) the created JavaScript code to create a coverage report.
|
|
||||||
|
|
||||||
#### Tests
|
|
||||||
Any errors will be shown with reference to their originating source in TypeScript
|
|
||||||
thanks to autogenerated source maps.
|
|
||||||
|
|
||||||
## Example Usage in modules:
|
|
||||||
* [gulp-browser](https://www.npmjs.com/package/gulp-browser)
|
|
||||||
|
|
||||||
> We will add more options over time.
|
|
||||||
|
|
||||||
## Tips and tricks:
|
|
||||||
|
|
||||||
* Use [npmts-g](https://www.npmjs.com/package/npmts-g) to use globally installed npmts and install npmts locally if no global npmts is available.
|
|
||||||
* Use [npmpage](https://www.npmjs.com/package/npmpage) to create a webpage from coverage reports and TypeDoc for the module
|
|
||||||
* Use [hosttoday/ht-docker-node:npmts](https://hub.docker.com/r/hosttoday/ht-docker-node/) for speedy CI builds
|
|
||||||
* Use [npmdocker](https://www.npmjs.com/package/npmdocker) for running tests consistently with docker.
|
|
||||||
|
|
||||||
## Future Scope:
|
|
||||||
* automatically manage badges in README
|
|
||||||
* manage tslint to enforce code best practices
|
|
||||||
* tear down any differences between local and CI environments by using brand new npmdocker
|
|
||||||
|
|
||||||
## About the authors:
|
|
||||||
[](https://lossless.com/)
|
|
||||||
|
|
||||||
[](https://paypal.me/lossless)
|
|
||||||
|
10
appveyor.yml
10
appveyor.yml
@ -1,10 +0,0 @@
|
|||||||
environment:
|
|
||||||
nodejs_version: "4"
|
|
||||||
install:
|
|
||||||
- ps: Install-Product node $env:nodejs_version
|
|
||||||
- npm install
|
|
||||||
test_script:
|
|
||||||
- node --version
|
|
||||||
- npm --version
|
|
||||||
- npm test
|
|
||||||
build: off
|
|
2
dist/npmts.check.d.ts
vendored
2
dist/npmts.check.d.ts
vendored
@ -1,3 +1,5 @@
|
|||||||
/// <reference types="q" />
|
/// <reference types="q" />
|
||||||
import * as plugins from "./npmts.plugins";
|
import * as plugins from "./npmts.plugins";
|
||||||
|
import { ProjectinfoNpm } from "projectinfo";
|
||||||
|
export declare let projectInfo: ProjectinfoNpm;
|
||||||
export declare let run: (configArg: any) => plugins.Q.Promise<{}>;
|
export declare let run: (configArg: any) => plugins.Q.Promise<{}>;
|
||||||
|
4
dist/npmts.check.js
vendored
4
dist/npmts.check.js
vendored
@ -2,10 +2,10 @@
|
|||||||
var plugins = require("./npmts.plugins");
|
var plugins = require("./npmts.plugins");
|
||||||
var paths = require("./npmts.paths");
|
var paths = require("./npmts.paths");
|
||||||
var npmts_promisechain_1 = require("./npmts.promisechain");
|
var npmts_promisechain_1 = require("./npmts.promisechain");
|
||||||
|
exports.projectInfo = new plugins.projectinfo.ProjectinfoNpm(paths.cwd);
|
||||||
var checkProjectTypings = function (configArg) {
|
var checkProjectTypings = function (configArg) {
|
||||||
var done = plugins.Q.defer();
|
var done = plugins.Q.defer();
|
||||||
var cwdProjectInfo = new plugins.projectinfo.ProjectinfoNpm(paths.cwd);
|
if (typeof exports.projectInfo.packageJson.typings == "undefined") {
|
||||||
if (typeof cwdProjectInfo.packageJson.typings == "undefined") {
|
|
||||||
plugins.beautylog.error("please add typings field to package.json");
|
plugins.beautylog.error("please add typings field to package.json");
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
|
16
dist/npmts.clean.js
vendored
16
dist/npmts.clean.js
vendored
@ -4,24 +4,18 @@ var plugins = require("./npmts.plugins");
|
|||||||
var paths = require("./npmts.paths");
|
var paths = require("./npmts.paths");
|
||||||
var npmts_promisechain_1 = require("./npmts.promisechain");
|
var npmts_promisechain_1 = require("./npmts.promisechain");
|
||||||
var removeDist = function () {
|
var removeDist = function () {
|
||||||
npmts_promisechain_1.npmtsOra.text("cleaning " + "dist".yellow + " folder");
|
npmts_promisechain_1.npmtsOra.text("cleaning dist folder");
|
||||||
return plugins.smartfile.fs.remove(paths.distDir);
|
return plugins.smartfile.fs.remove(paths.distDir);
|
||||||
};
|
};
|
||||||
var removeTypings = function () {
|
var removePages = function () {
|
||||||
var done = plugins.Q.defer();
|
npmts_promisechain_1.npmtsOra.text("cleaning pages folder");
|
||||||
npmts_promisechain_1.npmtsOra.text("cleaning " + "typings".yellow + " folder");
|
return plugins.smartfile.fs.remove(paths.pagesDir);
|
||||||
if (false) {
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
done.resolve();
|
|
||||||
}
|
|
||||||
return done.promise;
|
|
||||||
};
|
};
|
||||||
exports.run = function (configArg) {
|
exports.run = function (configArg) {
|
||||||
npmts_promisechain_1.npmtsOra.text("cleaning up from previous builds...");
|
npmts_promisechain_1.npmtsOra.text("cleaning up from previous builds...");
|
||||||
var done = plugins.Q.defer();
|
var done = plugins.Q.defer();
|
||||||
removeDist()
|
removeDist()
|
||||||
.then(removeTypings)
|
.then(removePages)
|
||||||
.then(function () {
|
.then(function () {
|
||||||
plugins.beautylog.ok("Cleaned up from previous builds!");
|
plugins.beautylog.ok("Cleaned up from previous builds!");
|
||||||
done.resolve(configArg);
|
done.resolve(configArg);
|
||||||
|
4
dist/npmts.configfile.d.ts
vendored
4
dist/npmts.configfile.d.ts
vendored
@ -1,4 +0,0 @@
|
|||||||
/// <reference types="q" />
|
|
||||||
import "typings-global";
|
|
||||||
import plugins = require("./npmts.plugins");
|
|
||||||
export declare var run: (argvArg: any) => plugins.Q.Promise<{}>;
|
|
35
dist/npmts.configfile.js
vendored
35
dist/npmts.configfile.js
vendored
@ -1,35 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
require("typings-global");
|
|
||||||
var plugins = require("./npmts.plugins");
|
|
||||||
var paths = require("./npmts.paths");
|
|
||||||
var npmts_promisechain_1 = require("./npmts.promisechain");
|
|
||||||
exports.run = function (argvArg) {
|
|
||||||
var done = plugins.Q.defer();
|
|
||||||
npmts_promisechain_1.npmtsOra.text("looking for npmextra.json");
|
|
||||||
var defaultConfig = {
|
|
||||||
mode: "default",
|
|
||||||
notest: false
|
|
||||||
};
|
|
||||||
if (argvArg.notest) {
|
|
||||||
defaultConfig.notest = true;
|
|
||||||
}
|
|
||||||
;
|
|
||||||
var config = plugins.npmextra.dataFor({
|
|
||||||
toolName: "npmts",
|
|
||||||
defaultSettings: defaultConfig,
|
|
||||||
cwd: paths.cwd
|
|
||||||
});
|
|
||||||
switch (config.mode) {
|
|
||||||
case "default":
|
|
||||||
case "custom":
|
|
||||||
plugins.beautylog.ok("mode is " + config.mode.yellow);
|
|
||||||
done.resolve(config);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
plugins.beautylog.error("mode " + config.mode.yellow + " not recognised!".red);
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
;
|
|
||||||
done.resolve(config);
|
|
||||||
return done.promise;
|
|
||||||
};
|
|
13
dist/npmts.options.d.ts
vendored
13
dist/npmts.options.d.ts
vendored
@ -1,4 +1,15 @@
|
|||||||
/// <reference types="q" />
|
/// <reference types="q" />
|
||||||
import "typings-global";
|
import "typings-global";
|
||||||
import plugins = require("./npmts.plugins");
|
import plugins = require("./npmts.plugins");
|
||||||
export declare var run: (configArg: any) => plugins.Q.Promise<{}>;
|
export declare type npmtsMode = "default" | "custom";
|
||||||
|
export interface npmtsConfig {
|
||||||
|
argv: any;
|
||||||
|
coverageTreshold: number;
|
||||||
|
docs: boolean;
|
||||||
|
mode: npmtsMode;
|
||||||
|
test: boolean;
|
||||||
|
testTs: any;
|
||||||
|
ts: any;
|
||||||
|
tsOptions: any;
|
||||||
|
}
|
||||||
|
export declare var run: (argvArg: any) => plugins.Q.Promise<{}>;
|
||||||
|
56
dist/npmts.options.js
vendored
56
dist/npmts.options.js
vendored
@ -1,16 +1,44 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
require("typings-global");
|
require("typings-global");
|
||||||
var plugins = require("./npmts.plugins");
|
var plugins = require("./npmts.plugins");
|
||||||
|
var paths = require("./npmts.paths");
|
||||||
var npmts_promisechain_1 = require("./npmts.promisechain");
|
var npmts_promisechain_1 = require("./npmts.promisechain");
|
||||||
exports.run = function (configArg) {
|
;
|
||||||
|
exports.run = function (argvArg) {
|
||||||
var done = plugins.Q.defer();
|
var done = plugins.Q.defer();
|
||||||
var config = configArg;
|
var defaultConfig = {
|
||||||
npmts_promisechain_1.npmtsOra.text("now determining build options...");
|
argv: undefined,
|
||||||
|
coverageTreshold: 70,
|
||||||
|
docs: true,
|
||||||
|
mode: "default",
|
||||||
|
test: true,
|
||||||
|
testTs: {},
|
||||||
|
ts: {},
|
||||||
|
tsOptions: {}
|
||||||
|
};
|
||||||
|
// mix with configfile
|
||||||
|
npmts_promisechain_1.npmtsOra.text("looking for npmextra.json");
|
||||||
|
var config = plugins.npmextra.dataFor({
|
||||||
|
toolName: "npmts",
|
||||||
|
defaultSettings: defaultConfig,
|
||||||
|
cwd: paths.cwd
|
||||||
|
});
|
||||||
|
// add argv
|
||||||
|
config.argv = argvArg;
|
||||||
|
// check mode
|
||||||
|
switch (config.mode) {
|
||||||
|
case "default":
|
||||||
|
case "custom":
|
||||||
|
plugins.beautylog.ok("mode is " + config.mode);
|
||||||
|
done.resolve(config);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
plugins.beautylog.error("mode not recognised!");
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
;
|
||||||
//handle default mode
|
//handle default mode
|
||||||
if (config.mode == "default") {
|
if (config.mode == "default") {
|
||||||
config.typings = [
|
|
||||||
"./ts/typings.json"
|
|
||||||
];
|
|
||||||
config.ts = (_a = {},
|
config.ts = (_a = {},
|
||||||
_a["./ts/**/*.ts"] = "./dist/",
|
_a["./ts/**/*.ts"] = "./dist/",
|
||||||
_a
|
_a
|
||||||
@ -19,13 +47,17 @@ exports.run = function (configArg) {
|
|||||||
_b["./test/test.ts"] = "./test/",
|
_b["./test/test.ts"] = "./test/",
|
||||||
_b
|
_b
|
||||||
);
|
);
|
||||||
config.test = ["./index.js"];
|
|
||||||
}
|
}
|
||||||
//check if config.tsOptions is available
|
;
|
||||||
config.tsOptions ? void (0) : config.tsOptions = {};
|
// mix with commandline
|
||||||
config.coverageTreshold ? void (0) : config.coverageTreshold = 70;
|
if (config.argv.notest) {
|
||||||
// handle docs
|
config.test = false;
|
||||||
config.docs ? void (0) : config.docs = {};
|
}
|
||||||
|
;
|
||||||
|
if (config.argv.nodocs) {
|
||||||
|
config.docs = false;
|
||||||
|
}
|
||||||
|
;
|
||||||
plugins.beautylog.ok("build options are ready!");
|
plugins.beautylog.ok("build options are ready!");
|
||||||
done.resolve(config);
|
done.resolve(config);
|
||||||
return done.promise;
|
return done.promise;
|
||||||
|
3
dist/npmts.paths.d.ts
vendored
3
dist/npmts.paths.d.ts
vendored
@ -3,10 +3,11 @@ export declare let npmtsPackageRoot: string;
|
|||||||
export declare let cwd: string;
|
export declare let cwd: string;
|
||||||
export declare let tsDir: string;
|
export declare let tsDir: string;
|
||||||
export declare let distDir: string;
|
export declare let distDir: string;
|
||||||
export declare let docsDir: string;
|
|
||||||
export declare let testDir: string;
|
export declare let testDir: string;
|
||||||
export declare let typingsDir: string;
|
export declare let typingsDir: string;
|
||||||
export declare let coverageDir: string;
|
export declare let coverageDir: string;
|
||||||
|
export declare let pagesDir: string;
|
||||||
|
export declare let pagesApiDir: string;
|
||||||
export declare let npmtsAssetsDir: string;
|
export declare let npmtsAssetsDir: string;
|
||||||
export declare let indexTS: string;
|
export declare let indexTS: string;
|
||||||
export declare let testTS: string;
|
export declare let testTS: string;
|
||||||
|
10
dist/npmts.paths.js
vendored
10
dist/npmts.paths.js
vendored
@ -1,17 +1,19 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
require("typings-global");
|
require("typings-global");
|
||||||
var plugins = require("./npmts.plugins");
|
var plugins = require("./npmts.plugins");
|
||||||
//Npmts Paths
|
// NPMTS Paths
|
||||||
exports.npmtsPackageRoot = plugins.path.join(__dirname, "../");
|
exports.npmtsPackageRoot = plugins.path.join(__dirname, "../");
|
||||||
//Project paths
|
// Project paths
|
||||||
exports.cwd = process.cwd();
|
exports.cwd = process.cwd();
|
||||||
//Directories
|
// Directories
|
||||||
exports.tsDir = plugins.path.join(exports.cwd, "ts/");
|
exports.tsDir = plugins.path.join(exports.cwd, "ts/");
|
||||||
exports.distDir = plugins.path.join(exports.cwd, "dist/");
|
exports.distDir = plugins.path.join(exports.cwd, "dist/");
|
||||||
exports.docsDir = plugins.path.join(exports.cwd, "docs/");
|
|
||||||
exports.testDir = plugins.path.join(exports.cwd, "test/");
|
exports.testDir = plugins.path.join(exports.cwd, "test/");
|
||||||
exports.typingsDir = plugins.path.join(exports.cwd, "ts/typings/");
|
exports.typingsDir = plugins.path.join(exports.cwd, "ts/typings/");
|
||||||
exports.coverageDir = plugins.path.join(exports.cwd, "coverage/");
|
exports.coverageDir = plugins.path.join(exports.cwd, "coverage/");
|
||||||
|
// Pages
|
||||||
|
exports.pagesDir = plugins.path.join(exports.cwd, "pages/");
|
||||||
|
exports.pagesApiDir = plugins.path.join(exports.pagesDir, "/api");
|
||||||
exports.npmtsAssetsDir = plugins.path.join(__dirname, "../assets/");
|
exports.npmtsAssetsDir = plugins.path.join(__dirname, "../assets/");
|
||||||
//Files
|
//Files
|
||||||
exports.indexTS = plugins.path.join(exports.cwd, "ts/index.ts");
|
exports.indexTS = plugins.path.join(exports.cwd, "ts/index.ts");
|
||||||
|
4
dist/npmts.promisechain.js
vendored
4
dist/npmts.promisechain.js
vendored
@ -6,15 +6,13 @@ var NpmtsAssets = require("./npmts.assets");
|
|||||||
var NpmtsCheck = require("./npmts.check");
|
var NpmtsCheck = require("./npmts.check");
|
||||||
var NpmtsClean = require("./npmts.clean");
|
var NpmtsClean = require("./npmts.clean");
|
||||||
var NpmtsCompile = require("./npmts.compile");
|
var NpmtsCompile = require("./npmts.compile");
|
||||||
var NpmtsConfigFile = require("./npmts.configfile");
|
|
||||||
var NpmtsTypeDoc = require("./npmts.typedoc");
|
var NpmtsTypeDoc = require("./npmts.typedoc");
|
||||||
var NpmtsOptions = require("./npmts.options");
|
var NpmtsOptions = require("./npmts.options");
|
||||||
var NpmtsTests = require("./npmts.tests");
|
var NpmtsTests = require("./npmts.tests");
|
||||||
exports.promisechain = function (argvArg) {
|
exports.promisechain = function (argvArg) {
|
||||||
var done = plugins.Q.defer();
|
var done = plugins.Q.defer();
|
||||||
exports.npmtsOra.start();
|
exports.npmtsOra.start();
|
||||||
NpmtsConfigFile.run(argvArg)
|
NpmtsOptions.run(argvArg)
|
||||||
.then(NpmtsOptions.run)
|
|
||||||
.then(NpmtsClean.run)
|
.then(NpmtsClean.run)
|
||||||
.then(NpmtsCheck.run)
|
.then(NpmtsCheck.run)
|
||||||
.then(NpmtsCompile.run)
|
.then(NpmtsCompile.run)
|
||||||
|
4
dist/npmts.tests.js
vendored
4
dist/npmts.tests.js
vendored
@ -25,7 +25,7 @@ var mocha = function (configArg) {
|
|||||||
plugins.gulp.src([plugins.path.join(paths.cwd, "test/test.js")])
|
plugins.gulp.src([plugins.path.join(paths.cwd, "test/test.js")])
|
||||||
.pipe(plugins.g.babel({
|
.pipe(plugins.g.babel({
|
||||||
presets: [
|
presets: [
|
||||||
plugins.path.join(paths.npmtsPackageRoot, "node_modules/babel-preset-es2015/index.js")
|
require.resolve("babel-preset-es2015")
|
||||||
]
|
]
|
||||||
}))
|
}))
|
||||||
.pipe(plugins.g.injectModules())
|
.pipe(plugins.g.injectModules())
|
||||||
@ -60,7 +60,7 @@ var coverage = function (configArg) {
|
|||||||
exports.run = function (configArg) {
|
exports.run = function (configArg) {
|
||||||
var done = plugins.Q.defer();
|
var done = plugins.Q.defer();
|
||||||
var config = configArg;
|
var config = configArg;
|
||||||
if (config.notest != true) {
|
if (config.test === true) {
|
||||||
npmts_promisechain_1.npmtsOra.text("now starting tests");
|
npmts_promisechain_1.npmtsOra.text("now starting tests");
|
||||||
plugins.beautylog.log("-------------------------------------------------------\n" +
|
plugins.beautylog.log("-------------------------------------------------------\n" +
|
||||||
"*************************** TESTS: ***************************\n" +
|
"*************************** TESTS: ***************************\n" +
|
||||||
|
22
dist/npmts.typedoc.js
vendored
22
dist/npmts.typedoc.js
vendored
@ -3,6 +3,7 @@ require("typings-global");
|
|||||||
var plugins = require("./npmts.plugins");
|
var plugins = require("./npmts.plugins");
|
||||||
var paths = require("./npmts.paths");
|
var paths = require("./npmts.paths");
|
||||||
var npmts_promisechain_1 = require("./npmts.promisechain");
|
var npmts_promisechain_1 = require("./npmts.promisechain");
|
||||||
|
var npmts_check_1 = require("./npmts.check");
|
||||||
var genTypeDoc = function (configArg) {
|
var genTypeDoc = function (configArg) {
|
||||||
var done = plugins.Q.defer();
|
var done = plugins.Q.defer();
|
||||||
npmts_promisechain_1.npmtsOra.text("now generating " + "TypeDoc documentation".yellow);
|
npmts_promisechain_1.npmtsOra.text("now generating " + "TypeDoc documentation".yellow);
|
||||||
@ -14,11 +15,12 @@ var genTypeDoc = function (configArg) {
|
|||||||
target: "es6",
|
target: "es6",
|
||||||
includeDeclarations: true,
|
includeDeclarations: true,
|
||||||
// Output options (see typedoc docs)
|
// Output options (see typedoc docs)
|
||||||
out: paths.docsDir,
|
out: paths.pagesApiDir,
|
||||||
json: plugins.path.join(paths.docsDir, "file.json"),
|
json: plugins.path.join(paths.pagesApiDir, "file.json"),
|
||||||
// TypeDoc options (see typedoc docs)
|
// TypeDoc options (see typedoc docs)
|
||||||
name: "my-project",
|
name: npmts_check_1.projectInfo.name,
|
||||||
//theme: "default",
|
readme: plugins.path.join(paths.cwd, "README.md"),
|
||||||
|
// theme: "default",
|
||||||
ignoreCompilerErrors: true,
|
ignoreCompilerErrors: true,
|
||||||
version: true,
|
version: true,
|
||||||
}))
|
}))
|
||||||
@ -27,9 +29,15 @@ var genTypeDoc = function (configArg) {
|
|||||||
};
|
};
|
||||||
exports.run = function (configArg) {
|
exports.run = function (configArg) {
|
||||||
var done = plugins.Q.defer();
|
var done = plugins.Q.defer();
|
||||||
genTypeDoc(configArg)
|
if (configArg.docs) {
|
||||||
.then(function () {
|
genTypeDoc(configArg)
|
||||||
|
.then(function () {
|
||||||
|
done.resolve(configArg);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
done.resolve(configArg);
|
done.resolve(configArg);
|
||||||
});
|
}
|
||||||
|
;
|
||||||
return done.promise;
|
return done.promise;
|
||||||
};
|
};
|
||||||
|
15
docs/book.json
Normal file
15
docs/book.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"structure": {
|
||||||
|
"readme": "index.md"
|
||||||
|
},
|
||||||
|
"plugins": [
|
||||||
|
"tonic",
|
||||||
|
"edit-link"
|
||||||
|
],
|
||||||
|
"pluginsConfig": {
|
||||||
|
"edit-link": {
|
||||||
|
"base": "https://gitlab.com/pushrocks/npmts/edit/master/docs/",
|
||||||
|
"label": "Edit on GitLab"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
80
docs/config.md
Normal file
80
docs/config.md
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
# Configuration of NPMTS
|
||||||
|
npmts can be configured to your needs:
|
||||||
|
|
||||||
|
### npmextra.json
|
||||||
|
the npmts section in npmextra.json can be used to configure npmts.
|
||||||
|
|
||||||
|
**Default**
|
||||||
|
>Note: When you are using `"mode":"default"` it'll cause npmts to override any other settings you may have made except for tsOptions (ES target etc.)
|
||||||
|
with default behaviour.
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"npmts":{
|
||||||
|
"mode":"default"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Custom settings**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"mode":"custom",
|
||||||
|
"docs":false,
|
||||||
|
"test":true,
|
||||||
|
"npmts":{
|
||||||
|
"ts":{
|
||||||
|
"./customdir/*.ts":"./"
|
||||||
|
},
|
||||||
|
"tsOptions":{
|
||||||
|
"declaration":false,
|
||||||
|
"target":"ES6"
|
||||||
|
},
|
||||||
|
"cli":true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
| key | default value | description |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `"mode"` | `"default"` | "default" will do default stuff and override , "custom" only does what you specify |
|
||||||
|
| `"docs"` | `true` | create docs for your module |
|
||||||
|
| `"test"` | `true` | test your module |
|
||||||
|
| `"ts"` | `{"./ts/*.ts":"./","./test/test.ts":"./test/"}` | allows you to define multiple ts portions |
|
||||||
|
| `"tsOptions"` | `{"target":"ES5", "declaration":"true"}` | specify options for tsc |
|
||||||
|
| `"cli"` | "false" | some modules are designed to be used from cli. If set to true NPMTS will create a cli.js that wires you dist files up for cli use. |
|
||||||
|
|
||||||
|
### TypeScript
|
||||||
|
by default npmts looks for `./ts/*.ts` and `./test/test.ts` that will compile to
|
||||||
|
`./dist/*.js` and `./test/test.js`
|
||||||
|
|
||||||
|
Use commonjs module system for wiring up files.
|
||||||
|
|
||||||
|
### Declaration files
|
||||||
|
**npmts** also creates declaration files like `./dist/index.d.ts` by default.
|
||||||
|
You can reference it in your package.json like this.
|
||||||
|
|
||||||
|
```json
|
||||||
|
"main": "dist/index.js",
|
||||||
|
"typings": ".dist/index.d.ts",
|
||||||
|
```
|
||||||
|
|
||||||
|
This is in line with the latest TypeScript best practices.
|
||||||
|
You can then import plugins via the TypeScript `import` Syntax
|
||||||
|
and tsc will pick up the declaration file automatically.
|
||||||
|
|
||||||
|
### TypeDoc
|
||||||
|
By default TypeDoc will create docs for your module in `./pages/api/` directory.
|
||||||
|
> Note: Use [npmpage](https://www.npmjs.com/package/npmpage) to build a website for the module.
|
||||||
|
It also allows you to integrate api docs with a gitbook located in `./docs/`
|
||||||
|
|
||||||
|
## Some notes:
|
||||||
|
#### Typings for third party modules that do not bundle declaration files
|
||||||
|
NPMTS no longer supports typings.json. Instead use the new TypeScript 2.x approach to typings using the @types/ npm scope.
|
||||||
|
|
||||||
|
#### Instrumentalize Code
|
||||||
|
npmts instrumentalizes (using istanbul) the created JavaScript code to create a coverage report.
|
||||||
|
|
||||||
|
#### Tests
|
||||||
|
Any errors will be shown with reference to their originating source in TypeScript
|
||||||
|
thanks to autogenerated source maps.
|
8
docs/default.md
Normal file
8
docs/default.md
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# Default task execution order
|
||||||
|
|
||||||
|
1. **Config:** Check config in ./npmextra.json (Check out [npmextra](https://www.npmjs.com/package/npmextra))
|
||||||
|
1. **Clean:** Clean up from any previous builds (old js files)
|
||||||
|
1. **Check:** Check project for typings declaration in package.json, unused dependencies and missing dependencies
|
||||||
|
1. **Transpile:** Transpile TypeScript with **inline sourcemaps** and **declaration files** to ES target
|
||||||
|
1. **Documentation:** Create TypeDoc Documentation from TypeScript files
|
||||||
|
1. **Test:** Babelify ES6 to ES5 on the fly, instrumentalize ES5 JavaScript with istanbul and run tests with Mocha.
|
13
docs/examples.md
Normal file
13
docs/examples.md
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
# Examples for NPMTS
|
||||||
|
|
||||||
|
## Example Usage in modules:
|
||||||
|
* [gulp-browser](https://www.npmjs.com/package/gulp-browser)
|
||||||
|
|
||||||
|
> We will add more options over time.
|
||||||
|
|
||||||
|
## Tips and tricks:
|
||||||
|
|
||||||
|
* Use [npmts-g](https://www.npmjs.com/package/npmts-g) to use globally installed npmts and install npmts locally if no global npmts is available.
|
||||||
|
* Use [npmpage](https://www.npmjs.com/package/npmpage) to create a webpage from coverage reports and TypeDoc for the module
|
||||||
|
* Use [hosttoday/ht-docker-node:npmts](https://hub.docker.com/r/hosttoday/ht-docker-node/) for speedy CI builds
|
||||||
|
* Use [npmdocker](https://www.npmjs.com/package/npmdocker) for running tests consistently with docker.
|
28
docs/index.md
Normal file
28
docs/index.md
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
# npmts
|
||||||
|
Write npm modules with TypeScript without hassle. TypeScript ready. Fully ES6.
|
||||||
|
|
||||||
|
## Availabililty
|
||||||
|
[](https://www.npmjs.com/package/npmts)
|
||||||
|
[](https://gitlab.com/pushrocks/npmts)
|
||||||
|
[](https://github.com/pushrocks/npmts)
|
||||||
|
[](https://pushrocks.gitlab.io/npmts/docs)
|
||||||
|
|
||||||
|
## Status for master
|
||||||
|
[](https://gitlab.com/pushrocks/npmts/commits/master)
|
||||||
|
[](https://gitlab.com/pushrocks/npmts/commits/master)
|
||||||
|
[](https://david-dm.org/pushrocks/npmts)
|
||||||
|
[](https://www.bithound.io/github/pushrocks/npmts/master/dependencies/npm)
|
||||||
|
[](https://www.bithound.io/github/pushrocks/npmts)
|
||||||
|
[](https://nodejs.org/dist/latest-v6.x/docs/api/)
|
||||||
|
[](https://nodejs.org/dist/latest-v6.x/docs/api/)
|
||||||
|
|
||||||
|
## Introduction
|
||||||
|
NPMTS is your friend when it comes to write, test, publish and document NPM modules written in TypeScript.
|
||||||
|
By default NPMTS will **bundle declaration files**. As a result npm module **code completion in editors like Visual Studio Code** works.
|
||||||
|
|
||||||
|
There is a docker image available that includes npmts to make CI a breeze:
|
||||||
|
[hosttoday/ht-docker-node:npmts on Dockerhub](https://hub.docker.com/r/hosttoday/ht-docker-node/)
|
||||||
|
|
||||||
|
For further information read the docs.
|
||||||
|
|
||||||
|
[](https://push.rocks)
|
14
docs/info.md
Normal file
14
docs/info.md
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
# Info
|
||||||
|
|
||||||
|
## Future Scope:
|
||||||
|
* automatically manage badges in README
|
||||||
|
* manage tslint to enforce code best practices
|
||||||
|
* tear down any differences between local and CI environments by using brand new npmdocker
|
||||||
|
|
||||||
|
## About the authors:
|
||||||
|
[](https://lossless.com/)
|
||||||
|
|
||||||
|
[](https://paypal.me/lossless)
|
||||||
|
|
||||||
|
## Legal Info
|
||||||
|
https://lossless.gmbh
|
18
docs/install.md
Normal file
18
docs/install.md
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# Install NPMTS
|
||||||
|
First install npmts globally, then install the npmts-g locally.
|
||||||
|
|
||||||
|
> **npmts-g* checks if the global version of npmts suffices the modules requirements.
|
||||||
|
If not it installs npmts locally in the right version during npm install.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm install npmts -g # installs npmts globally
|
||||||
|
npm install npmts-g --save-dev # installs npmts-g checking tool as devDependency
|
||||||
|
```
|
||||||
|
|
||||||
|
Then add it to your package.json's script section to trigger a build:
|
||||||
|
|
||||||
|
```json
|
||||||
|
"scripts": {
|
||||||
|
"test": "(npmts)"
|
||||||
|
}
|
||||||
|
```
|
8
docs/summary.md
Normal file
8
docs/summary.md
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# Summary
|
||||||
|
|
||||||
|
* [1. Intro](index.md)
|
||||||
|
* [2. Install](install.md)
|
||||||
|
* [3. Default Behaviour](default.md)
|
||||||
|
* [4. Configuration](config.md)
|
||||||
|
* [5. Examples](examples.md)
|
||||||
|
* [6. Info](info.md)
|
49
package.json
49
package.json
@ -1,18 +1,21 @@
|
|||||||
{
|
{
|
||||||
"name": "npmts",
|
"name": "npmts",
|
||||||
"version": "5.4.4",
|
"version": "5.4.25",
|
||||||
"description": "Write npm modules with TypeScript without hassle. TypeScript ready. Fully ES6.",
|
"description": "Write npm modules with TypeScript without hassle. TypeScript ready. Fully ES6.",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"bin": {
|
"bin": {
|
||||||
"npmts": "dist/cli.js"
|
"npmts": "dist/cli.js"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "(npm run compile && npm run setupCheck && npm run check && npm run checkVersion && npm run checkNoTest)",
|
"test": "(npm run compile && npm run setupCheck && npm run check && npm run checkVersion && npm run checkNoTest && npm run checkNoDocs)",
|
||||||
"compile": "(rm -rf test/ && rm -r dist/ && mkdir dist/ && tsc && cp assets/cli.js dist/ )",
|
"compile": "(rm -rf test/ && rm -r dist/ && mkdir dist/ && tsc && cp assets/cli.js dist/ )",
|
||||||
"setupCheck": "(git clone https://gitlab.com/sandboxzone/sandbox-npmts.git test/)",
|
"setupCheck": "(git clone https://gitlab.com/sandboxzone/sandbox-npmts.git test/)",
|
||||||
"check": "(cd test && node ../dist/index.js)",
|
"typedoc": "(typedoc --out ./pages/api --target ES6 ./ts/)",
|
||||||
|
"npmpage": "(npmpage)",
|
||||||
|
"check": "(cd test && npm install && node ../dist/index.js)",
|
||||||
"checkVersion": "(cd test/ && node ../dist/index.js -v)",
|
"checkVersion": "(cd test/ && node ../dist/index.js -v)",
|
||||||
"checkNoTest": "(cd test && node ../dist/index.js --notest)"
|
"checkNoTest": "(cd test && node ../dist/index.js --notest)",
|
||||||
|
"checkNoDocs": "(cd test && node ../dist/index.js --nodocs)"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@ -29,38 +32,38 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://gitlab.com/pushrocks/npmts#readme",
|
"homepage": "https://gitlab.com/pushrocks/npmts#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/gulp": "^3.8.28",
|
"@types/gulp": "^3.8.31",
|
||||||
"@types/minimatch": "^2.0.28",
|
"@types/minimatch": "^2.0.28",
|
||||||
"@types/q": "^0.0.27",
|
"@types/q": "^0.x.x",
|
||||||
"@types/shelljs": "^0.3.27",
|
"@types/shelljs": "^0.3.30",
|
||||||
"babel-preset-es2015": "^6.9.0",
|
"babel-preset-es2015": "^6.14.0",
|
||||||
"beautylog": "5.0.18",
|
"beautylog": "5.0.22",
|
||||||
"depcheck": "^0.6.4",
|
"depcheck": "^0.6.4",
|
||||||
"early": "^2.0.13",
|
"early": "^2.0.26",
|
||||||
"gulp": "3.9.1",
|
"gulp": "3.9.1",
|
||||||
"gulp-babel": "^6.1.2",
|
"gulp-babel": "^6.1.2",
|
||||||
"gulp-function": "^1.3.6",
|
"gulp-function": "^1.3.6",
|
||||||
"gulp-inject-modules": "^1.0.0",
|
"gulp-inject-modules": "^1.0.0",
|
||||||
"gulp-istanbul": "^1.0.0",
|
"gulp-istanbul": "^1.1.1",
|
||||||
"gulp-mocha": "^2.2.0",
|
"gulp-mocha": "^3.0.1",
|
||||||
"gulp-sourcemaps": "^1.6.0",
|
"gulp-sourcemaps": "^1.6.0",
|
||||||
"gulp-typedoc": "^2.0.0",
|
"gulp-typedoc": "^2.0.0",
|
||||||
"lodash": "^4.14.0",
|
"lodash": "^4.15.0",
|
||||||
"npmextra": "^1.0.8",
|
"npmextra": "^1.0.9",
|
||||||
"projectinfo": "1.0.3",
|
"projectinfo": "1.0.3",
|
||||||
"q": "^1.4.1",
|
"q": "^1.4.1",
|
||||||
"shelljs": "^0.7.3",
|
"shelljs": "^0.7.4",
|
||||||
"smartcli": "1.0.4",
|
"smartcli": "1.0.5",
|
||||||
"smartcov": "0.0.9",
|
"smartcov": "1.0.0",
|
||||||
"smartenv": "1.2.5",
|
"smartenv": "1.2.5",
|
||||||
"smartfile": "4.0.12",
|
"smartfile": "4.0.15",
|
||||||
"smartpath": "3.2.2",
|
"smartpath": "3.2.2",
|
||||||
"smartstring": "^2.0.15",
|
"smartstring": "^2.0.17",
|
||||||
"source-map-support": "^0.4.2",
|
"source-map-support": "^0.4.2",
|
||||||
"tsn": "^1.0.10",
|
"tsn": "^1.0.12",
|
||||||
"typedoc": "^0.4.4",
|
"typedoc": "^0.4.5",
|
||||||
"typescript": "^2.0.0-dev.20160630",
|
"typescript": "next",
|
||||||
"typings-global": "*"
|
"typings-global": "^1.0.14"
|
||||||
},
|
},
|
||||||
"devDependencies": {}
|
"devDependencies": {}
|
||||||
}
|
}
|
||||||
|
@ -2,10 +2,14 @@ import * as plugins from "./npmts.plugins";
|
|||||||
import * as paths from "./npmts.paths";
|
import * as paths from "./npmts.paths";
|
||||||
import { npmtsOra } from "./npmts.promisechain";
|
import { npmtsOra } from "./npmts.promisechain";
|
||||||
|
|
||||||
|
import {ProjectinfoNpm} from "projectinfo";
|
||||||
|
|
||||||
|
export let projectInfo = new plugins.projectinfo.ProjectinfoNpm(paths.cwd);
|
||||||
|
|
||||||
let checkProjectTypings = (configArg) => {
|
let checkProjectTypings = (configArg) => {
|
||||||
let done = plugins.Q.defer();
|
let done = plugins.Q.defer();
|
||||||
let cwdProjectInfo = new plugins.projectinfo.ProjectinfoNpm(paths.cwd);
|
|
||||||
if(typeof cwdProjectInfo.packageJson.typings == "undefined"){
|
if(typeof projectInfo.packageJson.typings == "undefined"){
|
||||||
plugins.beautylog.error(`please add typings field to package.json`);
|
plugins.beautylog.error(`please add typings field to package.json`);
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
};
|
};
|
||||||
|
@ -4,27 +4,20 @@ import paths = require("./npmts.paths");
|
|||||||
import {npmtsOra} from "./npmts.promisechain";
|
import {npmtsOra} from "./npmts.promisechain";
|
||||||
|
|
||||||
let removeDist = function(){
|
let removeDist = function(){
|
||||||
npmtsOra.text("cleaning " + "dist".yellow + " folder");
|
npmtsOra.text("cleaning dist folder");
|
||||||
return plugins.smartfile.fs.remove(paths.distDir);
|
return plugins.smartfile.fs.remove(paths.distDir);
|
||||||
};
|
};
|
||||||
|
|
||||||
let removeTypings = function(){
|
let removePages = function(){
|
||||||
let done = plugins.Q.defer();
|
npmtsOra.text("cleaning pages folder");
|
||||||
npmtsOra.text("cleaning " + "typings".yellow + " folder");
|
return plugins.smartfile.fs.remove(paths.pagesDir);
|
||||||
if(false){
|
|
||||||
//plugins.smartfile.fsaction.remove(paths.typingsDir)
|
|
||||||
// .then(done.resolve);
|
|
||||||
} else {
|
|
||||||
done.resolve();
|
|
||||||
}
|
|
||||||
return done.promise;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export let run = function(configArg){
|
export let run = function(configArg){
|
||||||
npmtsOra.text("cleaning up from previous builds...");
|
npmtsOra.text("cleaning up from previous builds...");
|
||||||
let done = plugins.Q.defer();
|
let done = plugins.Q.defer();
|
||||||
removeDist()
|
removeDist()
|
||||||
.then(removeTypings)
|
.then(removePages)
|
||||||
.then(function(){
|
.then(function(){
|
||||||
plugins.beautylog.ok("Cleaned up from previous builds!");
|
plugins.beautylog.ok("Cleaned up from previous builds!");
|
||||||
done.resolve(configArg);
|
done.resolve(configArg);
|
||||||
|
@ -1,32 +0,0 @@
|
|||||||
import "typings-global";
|
|
||||||
import plugins = require("./npmts.plugins");
|
|
||||||
import paths = require("./npmts.paths");
|
|
||||||
import {npmtsOra} from "./npmts.promisechain";
|
|
||||||
export var run = function(argvArg){
|
|
||||||
let done = plugins.Q.defer();
|
|
||||||
npmtsOra.text("looking for npmextra.json");
|
|
||||||
let defaultConfig = {
|
|
||||||
mode: "default",
|
|
||||||
notest:false
|
|
||||||
};
|
|
||||||
if(argvArg.notest){
|
|
||||||
defaultConfig.notest = true;
|
|
||||||
};
|
|
||||||
let config = plugins.npmextra.dataFor({
|
|
||||||
toolName:"npmts",
|
|
||||||
defaultSettings:defaultConfig,
|
|
||||||
cwd:paths.cwd
|
|
||||||
});
|
|
||||||
switch (config.mode){
|
|
||||||
case "default":
|
|
||||||
case "custom":
|
|
||||||
plugins.beautylog.ok("mode is " + config.mode.yellow);
|
|
||||||
done.resolve(config);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
plugins.beautylog.error("mode " + config.mode.yellow + " not recognised!".red);
|
|
||||||
process.exit(1);
|
|
||||||
};
|
|
||||||
done.resolve(config);
|
|
||||||
return done.promise;
|
|
||||||
};
|
|
@ -1,36 +1,79 @@
|
|||||||
import "typings-global";
|
import "typings-global";
|
||||||
import plugins = require("./npmts.plugins");
|
import plugins = require("./npmts.plugins");
|
||||||
|
import paths = require("./npmts.paths");
|
||||||
import {npmtsOra} from "./npmts.promisechain";
|
import {npmtsOra} from "./npmts.promisechain";
|
||||||
|
|
||||||
export var run = function(configArg){
|
export type npmtsMode = "default" | "custom"
|
||||||
var done = plugins.Q.defer();
|
|
||||||
var config = configArg;
|
|
||||||
|
|
||||||
npmtsOra.text("now determining build options...");
|
export interface npmtsConfig {
|
||||||
|
argv:any,
|
||||||
|
coverageTreshold:number,
|
||||||
|
docs:boolean,
|
||||||
|
mode: npmtsMode,
|
||||||
|
test:boolean,
|
||||||
|
testTs:any,
|
||||||
|
ts:any,
|
||||||
|
tsOptions:any
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
export var run = function(argvArg){
|
||||||
|
let done = plugins.Q.defer();
|
||||||
|
let defaultConfig:npmtsConfig = {
|
||||||
|
argv:undefined,
|
||||||
|
coverageTreshold: 70,
|
||||||
|
docs: true,
|
||||||
|
mode:"default",
|
||||||
|
test:true,
|
||||||
|
testTs:{},
|
||||||
|
ts:{},
|
||||||
|
tsOptions: {}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// mix with configfile
|
||||||
|
npmtsOra.text("looking for npmextra.json");
|
||||||
|
let config:npmtsConfig = plugins.npmextra.dataFor({
|
||||||
|
toolName:"npmts",
|
||||||
|
defaultSettings:defaultConfig,
|
||||||
|
cwd:paths.cwd
|
||||||
|
});
|
||||||
|
|
||||||
|
// add argv
|
||||||
|
config.argv = argvArg;
|
||||||
|
|
||||||
|
// check mode
|
||||||
|
switch (config.mode){
|
||||||
|
case "default":
|
||||||
|
case "custom":
|
||||||
|
plugins.beautylog.ok("mode is " + config.mode);
|
||||||
|
done.resolve(config);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
plugins.beautylog.error(`mode not recognised!`);
|
||||||
|
process.exit(1);
|
||||||
|
};
|
||||||
|
|
||||||
//handle default mode
|
//handle default mode
|
||||||
if (config.mode == "default"){
|
if (config.mode == "default"){
|
||||||
config.typings = [
|
|
||||||
"./ts/typings.json"
|
|
||||||
];
|
|
||||||
config.ts = {
|
config.ts = {
|
||||||
["./ts/**/*.ts"]: "./dist/"
|
["./ts/**/*.ts"]: "./dist/"
|
||||||
};
|
};
|
||||||
config.testTs = {
|
config.testTs = {
|
||||||
["./test/test.ts"]: "./test/"
|
["./test/test.ts"]: "./test/"
|
||||||
};
|
};
|
||||||
config.test = ["./index.js"];
|
};
|
||||||
}
|
|
||||||
|
|
||||||
//check if config.tsOptions is available
|
|
||||||
config.tsOptions ? void(0) : config.tsOptions = {};
|
|
||||||
|
|
||||||
|
|
||||||
|
// mix with commandline
|
||||||
|
if(config.argv.notest){
|
||||||
|
config.test = false;
|
||||||
|
};
|
||||||
|
if(config.argv.nodocs){
|
||||||
|
config.docs = false;
|
||||||
|
};
|
||||||
|
|
||||||
config.coverageTreshold ? void(0) : config.coverageTreshold = 70;
|
|
||||||
|
|
||||||
// handle docs
|
|
||||||
config.docs ? void(0) : config.docs = {};
|
|
||||||
|
|
||||||
plugins.beautylog.ok("build options are ready!");
|
plugins.beautylog.ok("build options are ready!");
|
||||||
done.resolve(config);
|
done.resolve(config);
|
||||||
|
@ -1,21 +1,24 @@
|
|||||||
import "typings-global";
|
import "typings-global";
|
||||||
import plugins = require("./npmts.plugins");
|
import plugins = require("./npmts.plugins");
|
||||||
|
|
||||||
//Npmts Paths
|
// NPMTS Paths
|
||||||
export let npmtsPackageRoot = plugins.path.join(__dirname,"../");
|
export let npmtsPackageRoot = plugins.path.join(__dirname,"../");
|
||||||
|
|
||||||
|
|
||||||
//Project paths
|
// Project paths
|
||||||
export let cwd = process.cwd();
|
export let cwd = process.cwd();
|
||||||
|
|
||||||
//Directories
|
// Directories
|
||||||
export let tsDir = plugins.path.join(cwd,"ts/");
|
export let tsDir = plugins.path.join(cwd,"ts/");
|
||||||
export let distDir = plugins.path.join(cwd,"dist/");
|
export let distDir = plugins.path.join(cwd,"dist/");
|
||||||
export let docsDir = plugins.path.join(cwd,"docs/");
|
|
||||||
export let testDir = plugins.path.join(cwd,"test/");
|
export let testDir = plugins.path.join(cwd,"test/");
|
||||||
export let typingsDir = plugins.path.join(cwd,"ts/typings/");
|
export let typingsDir = plugins.path.join(cwd,"ts/typings/");
|
||||||
export let coverageDir = plugins.path.join(cwd,"coverage/");
|
export let coverageDir = plugins.path.join(cwd,"coverage/");
|
||||||
|
|
||||||
|
// Pages
|
||||||
|
export let pagesDir = plugins.path.join(cwd,"pages/");
|
||||||
|
export let pagesApiDir = plugins.path.join(pagesDir,"/api");
|
||||||
|
|
||||||
export let npmtsAssetsDir = plugins.path.join(__dirname,"../assets/");
|
export let npmtsAssetsDir = plugins.path.join(__dirname,"../assets/");
|
||||||
|
|
||||||
//Files
|
//Files
|
||||||
|
@ -8,7 +8,6 @@ import NpmtsAssets = require("./npmts.assets");
|
|||||||
import NpmtsCheck = require("./npmts.check");
|
import NpmtsCheck = require("./npmts.check");
|
||||||
import NpmtsClean = require("./npmts.clean");
|
import NpmtsClean = require("./npmts.clean");
|
||||||
import NpmtsCompile = require("./npmts.compile");
|
import NpmtsCompile = require("./npmts.compile");
|
||||||
import NpmtsConfigFile = require("./npmts.configfile");
|
|
||||||
import NpmtsTypeDoc = require("./npmts.typedoc");
|
import NpmtsTypeDoc = require("./npmts.typedoc");
|
||||||
import NpmtsOptions = require("./npmts.options");
|
import NpmtsOptions = require("./npmts.options");
|
||||||
import NpmtsTests = require("./npmts.tests");
|
import NpmtsTests = require("./npmts.tests");
|
||||||
@ -16,8 +15,7 @@ import NpmtsTests = require("./npmts.tests");
|
|||||||
export let promisechain = function(argvArg){
|
export let promisechain = function(argvArg){
|
||||||
let done = plugins.Q.defer();
|
let done = plugins.Q.defer();
|
||||||
npmtsOra.start();
|
npmtsOra.start();
|
||||||
NpmtsConfigFile.run(argvArg)
|
NpmtsOptions.run(argvArg)
|
||||||
.then(NpmtsOptions.run)
|
|
||||||
.then(NpmtsClean.run)
|
.then(NpmtsClean.run)
|
||||||
.then(NpmtsCheck.run)
|
.then(NpmtsCheck.run)
|
||||||
.then(NpmtsCompile.run)
|
.then(NpmtsCompile.run)
|
||||||
|
@ -26,7 +26,7 @@ let mocha = function (configArg) {
|
|||||||
plugins.gulp.src([plugins.path.join(paths.cwd,"test/test.js")])
|
plugins.gulp.src([plugins.path.join(paths.cwd,"test/test.js")])
|
||||||
.pipe(plugins.g.babel({
|
.pipe(plugins.g.babel({
|
||||||
presets: [
|
presets: [
|
||||||
plugins.path.join(paths.npmtsPackageRoot,"node_modules/babel-preset-es2015/index.js")
|
require.resolve("babel-preset-es2015")
|
||||||
]
|
]
|
||||||
}))
|
}))
|
||||||
.pipe(plugins.g.injectModules())
|
.pipe(plugins.g.injectModules())
|
||||||
@ -66,7 +66,7 @@ let coverage = function(configArg){
|
|||||||
export let run = function(configArg) {
|
export let run = function(configArg) {
|
||||||
let done = plugins.Q.defer();
|
let done = plugins.Q.defer();
|
||||||
let config = configArg;
|
let config = configArg;
|
||||||
if(config.notest != true){
|
if(config.test === true){
|
||||||
npmtsOra.text("now starting tests");
|
npmtsOra.text("now starting tests");
|
||||||
plugins.beautylog.log(
|
plugins.beautylog.log(
|
||||||
"-------------------------------------------------------\n" +
|
"-------------------------------------------------------\n" +
|
||||||
|
@ -1,40 +1,46 @@
|
|||||||
import "typings-global";
|
import "typings-global";
|
||||||
import plugins = require("./npmts.plugins");
|
import plugins = require("./npmts.plugins");
|
||||||
import paths = require("./npmts.paths");
|
import paths = require("./npmts.paths");
|
||||||
import {npmtsOra} from "./npmts.promisechain";
|
import { npmtsOra } from "./npmts.promisechain";
|
||||||
|
|
||||||
let genTypeDoc = function(configArg){
|
import {projectInfo} from "./npmts.check";
|
||||||
|
|
||||||
|
let genTypeDoc = function (configArg) {
|
||||||
let done = plugins.Q.defer();
|
let done = plugins.Q.defer();
|
||||||
npmtsOra.text("now generating " + "TypeDoc documentation".yellow);
|
npmtsOra.text("now generating " + "TypeDoc documentation".yellow);
|
||||||
plugins.beautylog.log("TypeDoc Output:");
|
plugins.beautylog.log("TypeDoc Output:");
|
||||||
plugins.gulp.src(plugins.path.join(paths.tsDir,"**/*.ts"))
|
plugins.gulp.src(plugins.path.join(paths.tsDir, "**/*.ts"))
|
||||||
.pipe(plugins.g.typedoc({
|
.pipe(plugins.g.typedoc({
|
||||||
// TypeScript options (see typescript docs)
|
// TypeScript options (see typescript docs)
|
||||||
module: "commonjs",
|
module: "commonjs",
|
||||||
target: "es6",
|
target: "es6",
|
||||||
includeDeclarations: true,
|
includeDeclarations: true,
|
||||||
|
|
||||||
// Output options (see typedoc docs)
|
// Output options (see typedoc docs)
|
||||||
out: paths.docsDir,
|
out: paths.pagesApiDir,
|
||||||
json: plugins.path.join(paths.docsDir,"file.json"),
|
json: plugins.path.join(paths.pagesApiDir, "file.json"),
|
||||||
|
|
||||||
// TypeDoc options (see typedoc docs)
|
// TypeDoc options (see typedoc docs)
|
||||||
name: "my-project",
|
name: projectInfo.name,
|
||||||
|
readme: plugins.path.join(paths.cwd,"README.md"),
|
||||||
//theme: "default",
|
// theme: "default",
|
||||||
ignoreCompilerErrors: true,
|
ignoreCompilerErrors: true,
|
||||||
version: true,
|
version: true,
|
||||||
}))
|
}))
|
||||||
.pipe(plugins.g.gFunction(done.resolve,"atEnd"));
|
.pipe(plugins.g.gFunction(done.resolve, "atEnd"));
|
||||||
return done.promise;
|
return done.promise;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
export let run = function(configArg){
|
export let run = function (configArg) {
|
||||||
let done = plugins.Q.defer();
|
let done = plugins.Q.defer();
|
||||||
genTypeDoc(configArg)
|
if (configArg.docs) {
|
||||||
.then(() => {
|
genTypeDoc(configArg)
|
||||||
done.resolve(configArg);
|
.then(() => {
|
||||||
});
|
done.resolve(configArg);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
done.resolve(configArg);
|
||||||
|
};
|
||||||
return done.promise;
|
return done.promise;
|
||||||
};
|
};
|
Reference in New Issue
Block a user