Compare commits
86 Commits
Author | SHA1 | Date | |
---|---|---|---|
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 | |||
b2aaa51882 | |||
8ee6623984 | |||
91ec17c51d | |||
646dbdaa3a | |||
4550fcd375 | |||
4d1b992193 | |||
cf2d482798 | |||
43853e4d71 | |||
6a650b9f1b | |||
c76cc6baf7 | |||
659fa9ba95 | |||
97c47ed696 | |||
b69bd24cec | |||
3317168d12 | |||
433fad502d | |||
f583b05f73 | |||
3f50311487 | |||
ee16740d0b | |||
63c73536a2 | |||
2f7ebfc47a | |||
372d2605bb | |||
2ecf6c00b8 | |||
2f3d8cecd3 | |||
54bbab232e | |||
380407b5e8 | |||
2a5583946c | |||
80e36a34ee | |||
1f90f4abff | |||
3c7f5f1e2d | |||
8104609306 | |||
a3077f7800 | |||
c947121243 | |||
4b3f0649fa | |||
523c62530f | |||
aa57617fc7 | |||
ef89a33dfc | |||
474a730a09 | |||
e3b029c240 | |||
290824190d | |||
923d78caab | |||
6587b74a23 | |||
aa0a35f258 | |||
09b8809ede | |||
e25566490b | |||
3ed7473066 |
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
|
||||||
|
120
README.md
120
README.md
@ -1,120 +1,28 @@
|
|||||||
# npmts
|
# npmts
|
||||||
Write npm modules with TypeScript without hassle.
|
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://codecov.io/github/pushrocks/npmts?branch=master)
|
[](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. Check config in ./npmts.json
|
|
||||||
1. Clean up from any previous builds (old js files)
|
|
||||||
1. Install typings
|
|
||||||
1. Transpile TypeScript with **inline sourcemaps** and **declaration files**
|
|
||||||
1. Create EsDoc Documentation
|
|
||||||
1. Instrumentalize created JavaScript files with istanbul
|
|
||||||
1. Run Tests
|
|
||||||
1. Create Coverage report
|
|
||||||
|
|
||||||
#### npmts.json
|
|
||||||
the npmts.json is the main config file. You can use it to customize the behaviour of NPMTS.
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"mode":"default",
|
|
||||||
"ts":{
|
|
||||||
"./customdir/*.ts":"./"
|
|
||||||
},
|
|
||||||
"tsOptions":{
|
|
||||||
"declaration":false,
|
|
||||||
"target":"ES6"
|
|
||||||
},
|
|
||||||
"cli":true
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
| key | default value | description |
|
|
||||||
| --- | --- | --- |
|
|
||||||
| `"codecov"` | `true` | if true, coverage data will be uploaded to codecov when running on travis |
|
|
||||||
| `"docs"` | `{"publish":"false"}` | `{"publish":true, destination:"github"}` lets you control what happens with your module documentation |
|
|
||||||
| `"mode"` | `"default"` | "default" will do some defualt stuff, "custom" only does what you specify |
|
|
||||||
| `"tsOptions"` | `{"target":"ES5", "declaration":"true"}` | specify options for tsc |
|
|
||||||
| `"typings"` | `["./ts/typings.json"]` | allows you to specify multiple locations for typings.json to install. This is needed for modules that do not yet bundle typings |
|
|
||||||
| `"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 an `./dist/index.d.ts` declaration file 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.
|
|
||||||
|
|
||||||
#### Typings for third party modules that do not bundle declaration files
|
|
||||||
NPMTS does 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
|
|
||||||
When Typings have been installed, TypeScript + Declaration files have been transpiled and the resulting JS has been instrumentalized,
|
|
||||||
npmts looks for `.test/test.ts` which will be transpiled to test.js and run with mocha.
|
|
||||||
|
|
||||||
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-typings)
|
|
||||||
|
|
||||||
> 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/npmtspage) to create a webpage from coverage reports and EsDocs for the module
|
|
||||||
* Use [hosttoday/ht-docker-node:npmts](https://hub.docker.com/r/hosttoday/ht-docker-node/) for speedy CI builds
|
|
||||||
|
|
||||||
## About the authors:
|
|
||||||
[](https://lossless.com/)
|
|
||||||
|
|
||||||
[](https://paypal.me/lossless)
|
|
||||||
|
3
dist/npmts.assets.js
vendored
3
dist/npmts.assets.js
vendored
@ -8,11 +8,12 @@ exports.run = function (configArg) {
|
|||||||
var config = configArg;
|
var config = configArg;
|
||||||
npmts_promisechain_1.npmtsOra.text("now looking at " + "required assets".yellow);
|
npmts_promisechain_1.npmtsOra.text("now looking at " + "required assets".yellow);
|
||||||
if (config.cli == true) {
|
if (config.cli == true) {
|
||||||
plugins.smartfile.fs.copy(plugins.path.join(paths.npmtsAssetsDir, "cli.js"), paths.distDir);
|
plugins.smartfile.fs.copySync(plugins.path.join(paths.npmtsAssetsDir, "cli.js"), plugins.path.join(paths.distDir, "cli.js"));
|
||||||
plugins.beautylog.ok("installed CLI assets!");
|
plugins.beautylog.ok("installed CLI assets!");
|
||||||
done.resolve(config);
|
done.resolve(config);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
plugins.beautylog.ok("No additional assets required!");
|
||||||
done.resolve(config);
|
done.resolve(config);
|
||||||
}
|
}
|
||||||
return done.promise;
|
return done.promise;
|
||||||
|
3
dist/npmts.check.d.ts
vendored
Normal file
3
dist/npmts.check.d.ts
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
/// <reference types="q" />
|
||||||
|
import * as plugins from "./npmts.plugins";
|
||||||
|
export declare let run: (configArg: any) => plugins.Q.Promise<{}>;
|
128
dist/npmts.check.js
vendored
Normal file
128
dist/npmts.check.js
vendored
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
"use strict";
|
||||||
|
var plugins = require("./npmts.plugins");
|
||||||
|
var paths = require("./npmts.paths");
|
||||||
|
var npmts_promisechain_1 = require("./npmts.promisechain");
|
||||||
|
var checkProjectTypings = function (configArg) {
|
||||||
|
var done = plugins.Q.defer();
|
||||||
|
var cwdProjectInfo = new plugins.projectinfo.ProjectinfoNpm(paths.cwd);
|
||||||
|
if (typeof cwdProjectInfo.packageJson.typings == "undefined") {
|
||||||
|
plugins.beautylog.error("please add typings field to package.json");
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
;
|
||||||
|
done.resolve(configArg);
|
||||||
|
return done.promise;
|
||||||
|
};
|
||||||
|
var depcheckOptions = {
|
||||||
|
ignoreBinPackage: false,
|
||||||
|
parsers: {
|
||||||
|
'*.ts': plugins.depcheck.parser.typescript,
|
||||||
|
},
|
||||||
|
detectors: [
|
||||||
|
plugins.depcheck.detector.requireCallExpression,
|
||||||
|
plugins.depcheck.detector.importDeclaration
|
||||||
|
],
|
||||||
|
specials: [
|
||||||
|
plugins.depcheck.special.eslint,
|
||||||
|
plugins.depcheck.special.webpack
|
||||||
|
],
|
||||||
|
};
|
||||||
|
var checkDependencies = function (configArg) {
|
||||||
|
var done = plugins.Q.defer();
|
||||||
|
var depcheckOptionsMerged = plugins.lodashObject.merge(depcheckOptions, {
|
||||||
|
ignoreDirs: [
|
||||||
|
'test',
|
||||||
|
'dist',
|
||||||
|
'bower_components'
|
||||||
|
],
|
||||||
|
ignoreMatches: [
|
||||||
|
"@types/*",
|
||||||
|
"babel-preset-*"
|
||||||
|
]
|
||||||
|
});
|
||||||
|
plugins.depcheck(paths.cwd, depcheckOptionsMerged, function (unused) {
|
||||||
|
for (var _i = 0, _a = unused.dependencies; _i < _a.length; _i++) {
|
||||||
|
var item = _a[_i];
|
||||||
|
plugins.beautylog.warn("Watch out: unused dependency " + item.red);
|
||||||
|
}
|
||||||
|
;
|
||||||
|
for (var _b = 0, _c = unused.missing; _b < _c.length; _b++) {
|
||||||
|
var item = _c[_b];
|
||||||
|
plugins.beautylog.error("unused devDependency " + item.red);
|
||||||
|
}
|
||||||
|
;
|
||||||
|
if (unused.missing.length > 0) {
|
||||||
|
plugins.beautylog.info("exiting due to missing dependencies in package.json");
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
for (var _d = 0, _e = unused.invalidFiles; _d < _e.length; _d++) {
|
||||||
|
var item = _e[_d];
|
||||||
|
plugins.beautylog.warn("Watch out: could not parse file " + item.red);
|
||||||
|
}
|
||||||
|
;
|
||||||
|
for (var _f = 0, _g = unused.invalidDirs; _f < _g.length; _f++) {
|
||||||
|
var item = _g[_f];
|
||||||
|
plugins.beautylog.warn("Watch out: could not parse directory " + item.red);
|
||||||
|
}
|
||||||
|
;
|
||||||
|
done.resolve(configArg);
|
||||||
|
});
|
||||||
|
return done.promise;
|
||||||
|
};
|
||||||
|
var checkDevDependencies = function (configArg) {
|
||||||
|
var done = plugins.Q.defer();
|
||||||
|
var depcheckOptionsMerged = plugins.lodashObject.merge(depcheckOptions, {
|
||||||
|
ignoreDirs: [
|
||||||
|
'ts',
|
||||||
|
'dist',
|
||||||
|
'bower_components'
|
||||||
|
],
|
||||||
|
ignoreMatches: [
|
||||||
|
"@types/*",
|
||||||
|
"babel-preset-*"
|
||||||
|
]
|
||||||
|
});
|
||||||
|
plugins.depcheck(paths.cwd, depcheckOptionsMerged, function (unused) {
|
||||||
|
for (var _i = 0, _a = unused.devDependencies; _i < _a.length; _i++) {
|
||||||
|
var item = _a[_i];
|
||||||
|
plugins.beautylog.log("unused devDependency " + item.red);
|
||||||
|
}
|
||||||
|
;
|
||||||
|
for (var _b = 0, _c = unused.missing; _b < _c.length; _b++) {
|
||||||
|
var item = _c[_b];
|
||||||
|
plugins.beautylog.error("unused devDependency " + item.red);
|
||||||
|
}
|
||||||
|
;
|
||||||
|
if (unused.missing.length > 0) {
|
||||||
|
plugins.beautylog.info("exiting due to missing dependencies in package.json");
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
for (var _d = 0, _e = unused.invalidFiles; _d < _e.length; _d++) {
|
||||||
|
var item = _e[_d];
|
||||||
|
plugins.beautylog.warn("Watch out: could not parse file " + item.red);
|
||||||
|
}
|
||||||
|
;
|
||||||
|
for (var _f = 0, _g = unused.invalidDirs; _f < _g.length; _f++) {
|
||||||
|
var item = _g[_f];
|
||||||
|
plugins.beautylog.warn("Watch out: could not parse directory " + item.red);
|
||||||
|
}
|
||||||
|
;
|
||||||
|
done.resolve(configArg);
|
||||||
|
});
|
||||||
|
return done.promise;
|
||||||
|
};
|
||||||
|
var checkNodeVersion = function (configArg) {
|
||||||
|
var done = plugins.Q.defer();
|
||||||
|
done.resolve(configArg);
|
||||||
|
return done.promise;
|
||||||
|
};
|
||||||
|
exports.run = function (configArg) {
|
||||||
|
var done = plugins.Q.defer();
|
||||||
|
npmts_promisechain_1.npmtsOra.text("running project checks..."),
|
||||||
|
checkProjectTypings(configArg)
|
||||||
|
.then(checkDependencies)
|
||||||
|
.then(checkDevDependencies)
|
||||||
|
.then(checkNodeVersion)
|
||||||
|
.then(done.resolve);
|
||||||
|
return done.promise;
|
||||||
|
};
|
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);
|
||||||
|
1
dist/npmts.cli.d.ts
vendored
1
dist/npmts.cli.d.ts
vendored
@ -1 +0,0 @@
|
|||||||
import "typings-global";
|
|
2
dist/npmts.cli.js
vendored
2
dist/npmts.cli.js
vendored
@ -1,2 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
require("typings-global");
|
|
18
dist/npmts.compile.js
vendored
18
dist/npmts.compile.js
vendored
@ -7,16 +7,22 @@ var promiseArray = [];
|
|||||||
var compileTs = function (tsFileArrayArg, tsOptionsArg) {
|
var compileTs = function (tsFileArrayArg, tsOptionsArg) {
|
||||||
if (tsOptionsArg === void 0) { tsOptionsArg = {}; }
|
if (tsOptionsArg === void 0) { tsOptionsArg = {}; }
|
||||||
var done = plugins.Q.defer();
|
var done = plugins.Q.defer();
|
||||||
var tsOptionsDefault = {
|
var compilerOptionsDefault = {
|
||||||
declaration: true,
|
declaration: true,
|
||||||
target: "ES5",
|
module: "CommonJS",
|
||||||
module: "commonjs"
|
target: "ES6"
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
* merges default ts options with those found in npmts.json
|
* merges default ts options with those found in npmts.json
|
||||||
*/
|
*/
|
||||||
var tsOptions = function (keyArg) {
|
var compilerOptions = function (keyArg) {
|
||||||
return plugins.lodashObject.assign(tsOptionsDefault, tsOptionsArg);
|
var tsOptionsCombined = plugins.lodashObject.merge(compilerOptionsDefault, tsOptionsArg);
|
||||||
|
var compilerOptions = {
|
||||||
|
declaration: tsOptionsCombined.declaration,
|
||||||
|
module: plugins.tsn.ModuleKind[tsOptionsCombined.module],
|
||||||
|
target: plugins.tsn.ScriptTarget[tsOptionsCombined.target]
|
||||||
|
};
|
||||||
|
return compilerOptions;
|
||||||
};
|
};
|
||||||
var _loop_1 = function(keyArg) {
|
var _loop_1 = function(keyArg) {
|
||||||
plugins.beautylog.info("TypeScript assignment: transpile from " + keyArg.blue + " to " + tsFileArrayArg[keyArg].blue);
|
plugins.beautylog.info("TypeScript assignment: transpile from " + keyArg.blue + " to " + tsFileArrayArg[keyArg].blue);
|
||||||
@ -25,7 +31,7 @@ var compileTs = function (tsFileArrayArg, tsOptionsArg) {
|
|||||||
.then(function (filesToConvertArg) {
|
.then(function (filesToConvertArg) {
|
||||||
var filesToConvertAbsolute = plugins.smartpath.transform.toAbsolute(filesToConvertArg, process.cwd());
|
var filesToConvertAbsolute = plugins.smartpath.transform.toAbsolute(filesToConvertArg, process.cwd());
|
||||||
var destDir = plugins.smartpath.transform.toAbsolute(tsFileArrayArg[keyArg], process.cwd());
|
var destDir = plugins.smartpath.transform.toAbsolute(tsFileArrayArg[keyArg], process.cwd());
|
||||||
var filesCompiledPromise = plugins.tsn.compile(filesToConvertAbsolute, destDir);
|
var filesCompiledPromise = plugins.tsn.compile(filesToConvertAbsolute, destDir, compilerOptions(keyArg));
|
||||||
promiseArray.push(filesCompiledPromise);
|
promiseArray.push(filesCompiledPromise);
|
||||||
});
|
});
|
||||||
promiseArray.push(filesReadPromise);
|
promiseArray.push(filesReadPromise);
|
||||||
|
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<{}>;
|
|
34
dist/npmts.configfile.js
vendored
34
dist/npmts.configfile.js
vendored
@ -1,34 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
require("typings-global");
|
|
||||||
var plugins = require("./npmts.plugins");
|
|
||||||
var paths = require("./npmts.paths");
|
|
||||||
exports.run = function (argvArg) {
|
|
||||||
var done = plugins.Q.defer();
|
|
||||||
var config = {};
|
|
||||||
var configPath = plugins.path.join(paths.cwd, "npmts.json");
|
|
||||||
if (argvArg.notest) {
|
|
||||||
config.notest = true;
|
|
||||||
}
|
|
||||||
if (plugins.smartfile.fs.fileExistsSync(configPath)) {
|
|
||||||
plugins.beautylog.info("npmts.json".blue + " config file found!");
|
|
||||||
config = plugins.lodashObject.assign(config, plugins.smartfile.fs.toObjectSync(configPath));
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
plugins.beautylog.log("no config file found: so mode is " + "default".yellow);
|
|
||||||
config.mode = "default";
|
|
||||||
done.resolve(config);
|
|
||||||
}
|
|
||||||
;
|
|
||||||
return done.promise;
|
|
||||||
};
|
|
14
dist/npmts.options.d.ts
vendored
14
dist/npmts.options.d.ts
vendored
@ -1,5 +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 let isCi: () => any;
|
export declare type npmtsMode = "default" | "custom";
|
||||||
export declare var run: (configArg: any) => plugins.Q.Promise<{}>;
|
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<{}>;
|
||||||
|
59
dist/npmts.options.js
vendored
59
dist/npmts.options.js
vendored
@ -1,19 +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.isCi = function () {
|
;
|
||||||
return plugins.smartci.check.isCi();
|
exports.run = function (argvArg) {
|
||||||
};
|
|
||||||
exports.run = function (configArg) {
|
|
||||||
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
|
||||||
@ -22,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");
|
||||||
|
15
dist/npmts.plugins.d.ts
vendored
15
dist/npmts.plugins.d.ts
vendored
@ -1,23 +1,24 @@
|
|||||||
import "typings-global";
|
import "typings-global";
|
||||||
export import beautylog = require("beautylog");
|
export import beautylog = require("beautylog");
|
||||||
export declare let gulp: any;
|
export declare let depcheck: any;
|
||||||
|
export import gulp = require("gulp");
|
||||||
export declare let g: {
|
export declare let g: {
|
||||||
gFunction: any;
|
babel: any;
|
||||||
istanbul: any;
|
istanbul: any;
|
||||||
|
gFunction: any;
|
||||||
|
injectModules: any;
|
||||||
mocha: any;
|
mocha: any;
|
||||||
replace: any;
|
|
||||||
sourcemaps: any;
|
sourcemaps: any;
|
||||||
typedoc: any;
|
typedoc: any;
|
||||||
};
|
};
|
||||||
export declare let lodashObject: any;
|
export import lodashObject = require('lodash');
|
||||||
export declare let merge2: any;
|
export import npmextra = require("npmextra");
|
||||||
export import projectinfo = require("projectinfo");
|
export import projectinfo = require("projectinfo");
|
||||||
export import path = require("path");
|
export import path = require("path");
|
||||||
export import Q = require("q");
|
export import Q = require("q");
|
||||||
export import shelljs = require("shelljs");
|
export import shelljs = require("shelljs");
|
||||||
export declare let smartci: any;
|
|
||||||
export import smartcli = require("smartcli");
|
export import smartcli = require("smartcli");
|
||||||
export declare let smartcov: any;
|
export import smartcov = require("smartcov");
|
||||||
export import smartenv = require("smartenv");
|
export import smartenv = require("smartenv");
|
||||||
export import smartfile = require("smartfile");
|
export import smartfile = require("smartfile");
|
||||||
export import smartpath = require("smartpath");
|
export import smartpath = require("smartpath");
|
||||||
|
11
dist/npmts.plugins.js
vendored
11
dist/npmts.plugins.js
vendored
@ -1,22 +1,23 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
require("typings-global");
|
require("typings-global");
|
||||||
exports.beautylog = require("beautylog");
|
exports.beautylog = require("beautylog");
|
||||||
|
exports.depcheck = require("depcheck");
|
||||||
exports.gulp = require("gulp");
|
exports.gulp = require("gulp");
|
||||||
exports.g = {
|
exports.g = {
|
||||||
gFunction: require("gulp-function"),
|
babel: require("gulp-babel"),
|
||||||
istanbul: require("gulp-istanbul"),
|
istanbul: require("gulp-istanbul"),
|
||||||
|
gFunction: require("gulp-function"),
|
||||||
|
injectModules: require("gulp-inject-modules"),
|
||||||
mocha: require("gulp-mocha"),
|
mocha: require("gulp-mocha"),
|
||||||
replace: require("gulp-replace"),
|
|
||||||
sourcemaps: require("gulp-sourcemaps"),
|
sourcemaps: require("gulp-sourcemaps"),
|
||||||
typedoc: require("gulp-typedoc")
|
typedoc: require("gulp-typedoc")
|
||||||
};
|
};
|
||||||
exports.lodashObject = require('lodash/fp/object');
|
exports.lodashObject = require('lodash');
|
||||||
exports.merge2 = require("merge2");
|
exports.npmextra = require("npmextra");
|
||||||
exports.projectinfo = require("projectinfo");
|
exports.projectinfo = require("projectinfo");
|
||||||
exports.path = require("path");
|
exports.path = require("path");
|
||||||
exports.Q = require("q");
|
exports.Q = require("q");
|
||||||
exports.shelljs = require("shelljs");
|
exports.shelljs = require("shelljs");
|
||||||
exports.smartci = require("smartci");
|
|
||||||
exports.smartcli = require("smartcli");
|
exports.smartcli = require("smartcli");
|
||||||
exports.smartcov = require("smartcov");
|
exports.smartcov = require("smartcov");
|
||||||
exports.smartenv = require("smartenv");
|
exports.smartenv = require("smartenv");
|
||||||
|
6
dist/npmts.promisechain.js
vendored
6
dist/npmts.promisechain.js
vendored
@ -3,18 +3,18 @@ require("typings-global");
|
|||||||
var plugins = require("./npmts.plugins");
|
var plugins = require("./npmts.plugins");
|
||||||
exports.npmtsOra = new plugins.beautylog.Ora("setting up TaskChain", "cyan");
|
exports.npmtsOra = new plugins.beautylog.Ora("setting up TaskChain", "cyan");
|
||||||
var NpmtsAssets = require("./npmts.assets");
|
var NpmtsAssets = require("./npmts.assets");
|
||||||
|
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(NpmtsCompile.run)
|
.then(NpmtsCompile.run)
|
||||||
.then(NpmtsAssets.run)
|
.then(NpmtsAssets.run)
|
||||||
.then(NpmtsTypeDoc.run)
|
.then(NpmtsTypeDoc.run)
|
||||||
|
65
dist/npmts.tests.js
vendored
65
dist/npmts.tests.js
vendored
@ -7,47 +7,49 @@ var npmts_promisechain_1 = require("./npmts.promisechain");
|
|||||||
*
|
*
|
||||||
* @returns {*}
|
* @returns {*}
|
||||||
*/
|
*/
|
||||||
var istanbul = function (configArg) {
|
var mocha = function (configArg) {
|
||||||
npmts_promisechain_1.npmtsOra.text("Instrumentalizing transpiled JS...");
|
npmts_promisechain_1.npmtsOra.text("Instrumentalizing and testing transpiled JS");
|
||||||
|
npmts_promisechain_1.npmtsOra.end(); // end npmtsOra for tests.
|
||||||
var done = plugins.Q.defer();
|
var done = plugins.Q.defer();
|
||||||
var stream = plugins.gulp.src([plugins.path.join(paths.cwd, "dist/*.js")])
|
var stream = plugins.gulp.src([plugins.path.join(paths.cwd, "dist/*.js")])
|
||||||
.pipe(plugins.g.sourcemaps.init())
|
.pipe(plugins.g.sourcemaps.init())
|
||||||
.pipe(plugins.g.istanbul()) // Covering files
|
.pipe(plugins.g.babel({
|
||||||
|
presets: [
|
||||||
|
require.resolve("babel-preset-es2015")
|
||||||
|
]
|
||||||
|
}))
|
||||||
|
.pipe(plugins.g.istanbul({}))
|
||||||
.pipe(plugins.g.sourcemaps.write())
|
.pipe(plugins.g.sourcemaps.write())
|
||||||
.pipe(plugins.g.istanbul.hookRequire()) // Force `require` to return covered files
|
.pipe(plugins.g.injectModules())
|
||||||
.pipe(plugins.g.gFunction(function () {
|
.on("finish", function () {
|
||||||
plugins.beautylog.ok("JS has been instrumentalized to get test code coverage!");
|
plugins.gulp.src([plugins.path.join(paths.cwd, "test/test.js")])
|
||||||
done.resolve(configArg);
|
.pipe(plugins.g.babel({
|
||||||
}, "atEnd"));
|
presets: [
|
||||||
return done.promise;
|
require.resolve("babel-preset-es2015")
|
||||||
};
|
]
|
||||||
/**
|
}))
|
||||||
*
|
.pipe(plugins.g.injectModules())
|
||||||
* @returns {*}
|
.pipe(plugins.g.mocha())
|
||||||
*/
|
.pipe(plugins.g.istanbul.writeReports({
|
||||||
var mocha = function (configArg) {
|
dir: plugins.path.join(paths.cwd, "./coverage"),
|
||||||
var done = plugins.Q.defer();
|
reporters: ['lcovonly', 'json', 'text', 'text-summary']
|
||||||
npmts_promisechain_1.npmtsOra.end(); // end npmtsOra for tests.
|
}))
|
||||||
var stream = plugins.gulp.src(["./test/test.js"])
|
.pipe(plugins.g.gFunction(function () {
|
||||||
.pipe(plugins.g.mocha())
|
plugins.beautylog.ok("Tested!");
|
||||||
.pipe(plugins.g.istanbul.writeReports()) // Creating the reports after tests ran
|
done.resolve(configArg);
|
||||||
.pipe(plugins.g.gFunction(function () {
|
}, "atEnd"));
|
||||||
plugins.beautylog.ok("Tests have passed!");
|
});
|
||||||
done.resolve(configArg);
|
|
||||||
}, "atEnd"));
|
|
||||||
return done.promise;
|
return done.promise;
|
||||||
};
|
};
|
||||||
var coverage = function (configArg) {
|
var coverage = function (configArg) {
|
||||||
var done = plugins.Q.defer();
|
var done = plugins.Q.defer();
|
||||||
plugins.smartcov.get.percentage(plugins.path.join(paths.coverageDir, "lcov.info"))
|
plugins.smartcov.get.percentage(plugins.path.join(paths.coverageDir, "lcov.info"), 2)
|
||||||
.then(function (percentageArg) {
|
.then(function (percentageArg) {
|
||||||
if (percentageArg >= configArg.coverageTreshold) {
|
if (percentageArg >= configArg.coverageTreshold) {
|
||||||
plugins.beautylog.ok("your coverage of " + percentageArg.toString().blue + "% ".blue + "exceeds your treshold of " +
|
plugins.beautylog.ok(percentageArg.toString() + "% coverage exceeds your treshold of " + configArg.coverageTreshold.toString() + "%");
|
||||||
configArg.coverageTreshold.toString().blue + "%".blue);
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
plugins.beautylog.warn("your coverage of " + percentageArg + "% " + "fails your treshold of " +
|
plugins.beautylog.warn(percentageArg.toString() + "% coverage fails your treshold of " + configArg.coverageTreshold.toString() + "%");
|
||||||
configArg.coverageTreshold + "%");
|
|
||||||
plugins.beautylog.error("exiting due to coverage failure");
|
plugins.beautylog.error("exiting due to coverage failure");
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
@ -58,13 +60,12 @@ 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" +
|
||||||
"--------------------------------------------------------------");
|
"--------------------------------------------------------------");
|
||||||
istanbul(config)
|
mocha(config)
|
||||||
.then(mocha)
|
|
||||||
.then(coverage)
|
.then(coverage)
|
||||||
.then(function () {
|
.then(function () {
|
||||||
done.resolve(config);
|
done.resolve(config);
|
||||||
|
16
dist/npmts.typedoc.js
vendored
16
dist/npmts.typedoc.js
vendored
@ -14,8 +14,8 @@ 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: "my-project",
|
||||||
//theme: "default",
|
//theme: "default",
|
||||||
@ -27,9 +27,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)
|
56
package.json
56
package.json
@ -1,18 +1,21 @@
|
|||||||
{
|
{
|
||||||
"name": "npmts",
|
"name": "npmts",
|
||||||
"version": "5.3.13",
|
"version": "5.4.23",
|
||||||
"description": "write npm modules with TypeScript",
|
"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,37 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://gitlab.com/pushrocks/npmts#readme",
|
"homepage": "https://gitlab.com/pushrocks/npmts#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/minimatch": "*",
|
"@types/gulp": "^3.8.30",
|
||||||
"@types/q": "*",
|
"@types/minimatch": "^2.0.28",
|
||||||
"@types/shelljs": "*",
|
"@types/q": "^0.x.x",
|
||||||
"beautylog": "5.0.14",
|
"@types/shelljs": "^0.3.29",
|
||||||
"early": "^2.0.13",
|
"babel-preset-es2015": "^6.13.2",
|
||||||
"esdoc": "^0.4.7",
|
"beautylog": "5.0.20",
|
||||||
|
"depcheck": "^0.6.4",
|
||||||
|
"early": "^2.0.25",
|
||||||
"gulp": "3.9.1",
|
"gulp": "3.9.1",
|
||||||
"gulp-concat": "^2.6.0",
|
"gulp-babel": "^6.1.2",
|
||||||
"gulp-function": "^1.3.6",
|
"gulp-function": "^1.3.6",
|
||||||
"gulp-if": "^2.0.1",
|
"gulp-inject-modules": "^1.0.0",
|
||||||
"gulp-istanbul": "^1.0.0",
|
"gulp-istanbul": "^1.1.0",
|
||||||
"gulp-jsdoc3": "^0.3.0",
|
"gulp-mocha": "^3.0.1",
|
||||||
"gulp-mocha": "^2.2.0",
|
|
||||||
"gulp-replace": "^0.5.4",
|
|
||||||
"gulp-sourcemaps": "^1.6.0",
|
"gulp-sourcemaps": "^1.6.0",
|
||||||
"gulp-typedoc": "^2.0.0",
|
"gulp-typedoc": "^2.0.0",
|
||||||
"lodash": "^4.13.1",
|
"lodash": "^4.15.0",
|
||||||
"merge2": "1.0.2",
|
"npmextra": "^1.0.9",
|
||||||
"projectinfo": "1.0.3",
|
"projectinfo": "1.0.3",
|
||||||
"q": "^1.4.1",
|
"q": "^1.4.1",
|
||||||
"shelljs": "^0.7.0",
|
"shelljs": "^0.7.3",
|
||||||
"smartci": "0.0.1",
|
|
||||||
"smartcli": "1.0.4",
|
"smartcli": "1.0.4",
|
||||||
"smartcov": "0.0.6",
|
"smartcov": "1.0.0",
|
||||||
"smartenv": "1.2.5",
|
"smartenv": "1.2.5",
|
||||||
"smartfile": "4.0.10",
|
"smartfile": "4.0.13",
|
||||||
"smartpath": "3.2.2",
|
"smartpath": "3.2.2",
|
||||||
"smartstring": "^2.0.14",
|
"smartstring": "^2.0.17",
|
||||||
"source-map-support": "^0.4.2",
|
"source-map-support": "^0.4.2",
|
||||||
"tsn": "^1.0.7",
|
"tsn": "^1.0.12",
|
||||||
"typedoc": "^0.4.4",
|
"typedoc": "^0.4.5",
|
||||||
"typescript": "^2.0.0-dev.20160630",
|
"typescript": "next",
|
||||||
"typings-global": "*"
|
"typings-global": "*"
|
||||||
},
|
},
|
||||||
"devDependencies": {}
|
"devDependencies": {}
|
||||||
|
@ -8,10 +8,14 @@ export var run = function(configArg){
|
|||||||
let config = configArg;
|
let config = configArg;
|
||||||
npmtsOra.text("now looking at " + "required assets".yellow);
|
npmtsOra.text("now looking at " + "required assets".yellow);
|
||||||
if(config.cli == true){
|
if(config.cli == true){
|
||||||
plugins.smartfile.fs.copy(plugins.path.join(paths.npmtsAssetsDir,"cli.js"),paths.distDir);
|
plugins.smartfile.fs.copySync(
|
||||||
|
plugins.path.join(paths.npmtsAssetsDir,"cli.js"),
|
||||||
|
plugins.path.join(paths.distDir,"cli.js")
|
||||||
|
);
|
||||||
plugins.beautylog.ok("installed CLI assets!");
|
plugins.beautylog.ok("installed CLI assets!");
|
||||||
done.resolve(config);
|
done.resolve(config);
|
||||||
} else {
|
} else {
|
||||||
|
plugins.beautylog.ok("No additional assets required!")
|
||||||
done.resolve(config);
|
done.resolve(config);
|
||||||
}
|
}
|
||||||
return done.promise;
|
return done.promise;
|
||||||
|
117
ts/npmts.check.ts
Normal file
117
ts/npmts.check.ts
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
import * as plugins from "./npmts.plugins";
|
||||||
|
import * as paths from "./npmts.paths";
|
||||||
|
import { npmtsOra } from "./npmts.promisechain";
|
||||||
|
|
||||||
|
let checkProjectTypings = (configArg) => {
|
||||||
|
let done = plugins.Q.defer();
|
||||||
|
let cwdProjectInfo = new plugins.projectinfo.ProjectinfoNpm(paths.cwd);
|
||||||
|
if(typeof cwdProjectInfo.packageJson.typings == "undefined"){
|
||||||
|
plugins.beautylog.error(`please add typings field to package.json`);
|
||||||
|
process.exit(1);
|
||||||
|
};
|
||||||
|
done.resolve(configArg);
|
||||||
|
return done.promise;
|
||||||
|
};
|
||||||
|
|
||||||
|
const depcheckOptions = {
|
||||||
|
ignoreBinPackage: false, // ignore the packages with bin entry
|
||||||
|
parsers: { // the target parsers
|
||||||
|
'*.ts': plugins.depcheck.parser.typescript,
|
||||||
|
},
|
||||||
|
detectors: [ // the target detectors
|
||||||
|
plugins.depcheck.detector.requireCallExpression,
|
||||||
|
plugins.depcheck.detector.importDeclaration
|
||||||
|
],
|
||||||
|
specials: [ // the target special parsers
|
||||||
|
plugins.depcheck.special.eslint,
|
||||||
|
plugins.depcheck.special.webpack
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
let checkDependencies = (configArg) => {
|
||||||
|
let done = plugins.Q.defer();
|
||||||
|
let depcheckOptionsMerged = plugins.lodashObject.merge(depcheckOptions, {
|
||||||
|
ignoreDirs: [ // folder with these names will be ignored
|
||||||
|
'test',
|
||||||
|
'dist',
|
||||||
|
'bower_components'
|
||||||
|
],
|
||||||
|
ignoreMatches: [ // ignore dependencies that matches these globs
|
||||||
|
"@types/*",
|
||||||
|
"babel-preset-*"
|
||||||
|
]
|
||||||
|
})
|
||||||
|
plugins.depcheck(paths.cwd, depcheckOptionsMerged, (unused) => {
|
||||||
|
for (let item of unused.dependencies) {
|
||||||
|
plugins.beautylog.warn(`Watch out: unused dependency ${item.red}`);
|
||||||
|
};
|
||||||
|
for (let item of unused.missing) {
|
||||||
|
plugins.beautylog.error(`unused devDependency ${item.red}`);
|
||||||
|
};
|
||||||
|
if (unused.missing.length > 0) {
|
||||||
|
plugins.beautylog.info("exiting due to missing dependencies in package.json");
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
for (let item of unused.invalidFiles) {
|
||||||
|
plugins.beautylog.warn(`Watch out: could not parse file ${item.red}`);
|
||||||
|
};
|
||||||
|
for (let item of unused.invalidDirs) {
|
||||||
|
plugins.beautylog.warn(`Watch out: could not parse directory ${item.red}`);
|
||||||
|
};
|
||||||
|
done.resolve(configArg);
|
||||||
|
});
|
||||||
|
return done.promise;
|
||||||
|
};
|
||||||
|
|
||||||
|
let checkDevDependencies = (configArg) => {
|
||||||
|
let done = plugins.Q.defer();
|
||||||
|
let depcheckOptionsMerged = plugins.lodashObject.merge(depcheckOptions, {
|
||||||
|
ignoreDirs: [ // folder with these names will be ignored
|
||||||
|
'ts',
|
||||||
|
'dist',
|
||||||
|
'bower_components'
|
||||||
|
],
|
||||||
|
ignoreMatches: [ // ignore dependencies that matches these globs
|
||||||
|
"@types/*",
|
||||||
|
"babel-preset-*"
|
||||||
|
]
|
||||||
|
})
|
||||||
|
plugins.depcheck(paths.cwd, depcheckOptionsMerged, (unused) => {
|
||||||
|
for (let item of unused.devDependencies) {
|
||||||
|
plugins.beautylog.log(`unused devDependency ${item.red}`);
|
||||||
|
};
|
||||||
|
for (let item of unused.missing) {
|
||||||
|
plugins.beautylog.error(`unused devDependency ${item.red}`);
|
||||||
|
};
|
||||||
|
if (unused.missing.length > 0) {
|
||||||
|
plugins.beautylog.info("exiting due to missing dependencies in package.json");
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
for (let item of unused.invalidFiles) {
|
||||||
|
plugins.beautylog.warn(`Watch out: could not parse file ${item.red}`);
|
||||||
|
};
|
||||||
|
for (let item of unused.invalidDirs) {
|
||||||
|
plugins.beautylog.warn(`Watch out: could not parse directory ${item.red}`);
|
||||||
|
};
|
||||||
|
done.resolve(configArg);
|
||||||
|
});
|
||||||
|
return done.promise;
|
||||||
|
};
|
||||||
|
|
||||||
|
let checkNodeVersion = (configArg) => {
|
||||||
|
let done = plugins.Q.defer();
|
||||||
|
|
||||||
|
done.resolve(configArg);
|
||||||
|
return done.promise;
|
||||||
|
}
|
||||||
|
|
||||||
|
export let run = (configArg) => {
|
||||||
|
let done = plugins.Q.defer();
|
||||||
|
npmtsOra.text("running project checks..."),
|
||||||
|
checkProjectTypings(configArg)
|
||||||
|
.then(checkDependencies)
|
||||||
|
.then(checkDevDependencies)
|
||||||
|
.then(checkNodeVersion)
|
||||||
|
.then(done.resolve);
|
||||||
|
return done.promise;
|
||||||
|
}
|
@ -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 +0,0 @@
|
|||||||
import "typings-global";
|
|
@ -8,17 +8,23 @@ let promiseArray = [];
|
|||||||
let compileTs = (tsFileArrayArg:string[],tsOptionsArg = {}) => {
|
let compileTs = (tsFileArrayArg:string[],tsOptionsArg = {}) => {
|
||||||
let done = plugins.Q.defer();
|
let done = plugins.Q.defer();
|
||||||
|
|
||||||
let tsOptionsDefault = {
|
let compilerOptionsDefault = {
|
||||||
declaration: true,
|
declaration: true,
|
||||||
target: "ES5",
|
module: "CommonJS",
|
||||||
module: "commonjs"
|
target: "ES6"
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* merges default ts options with those found in npmts.json
|
* merges default ts options with those found in npmts.json
|
||||||
*/
|
*/
|
||||||
let tsOptions = function (keyArg:string) {
|
let compilerOptions = function (keyArg:string) {
|
||||||
return plugins.lodashObject.assign(tsOptionsDefault, tsOptionsArg)
|
let tsOptionsCombined = plugins.lodashObject.merge(compilerOptionsDefault, tsOptionsArg);
|
||||||
|
let compilerOptions:plugins.tsn.CompilerOptions = {
|
||||||
|
declaration: tsOptionsCombined.declaration,
|
||||||
|
module: plugins.tsn.ModuleKind[tsOptionsCombined.module],
|
||||||
|
target: plugins.tsn.ScriptTarget[tsOptionsCombined.target]
|
||||||
|
};
|
||||||
|
return compilerOptions;
|
||||||
};
|
};
|
||||||
for (let keyArg in tsFileArrayArg) {
|
for (let keyArg in tsFileArrayArg) {
|
||||||
plugins.beautylog.info(`TypeScript assignment: transpile from ${keyArg.blue} to ${tsFileArrayArg[keyArg].blue}`);
|
plugins.beautylog.info(`TypeScript assignment: transpile from ${keyArg.blue} to ${tsFileArrayArg[keyArg].blue}`);
|
||||||
@ -29,7 +35,8 @@ let compileTs = (tsFileArrayArg:string[],tsOptionsArg = {}) => {
|
|||||||
let destDir = plugins.smartpath.transform.toAbsolute(tsFileArrayArg[keyArg],process.cwd());
|
let destDir = plugins.smartpath.transform.toAbsolute(tsFileArrayArg[keyArg],process.cwd());
|
||||||
let filesCompiledPromise = plugins.tsn.compile(
|
let filesCompiledPromise = plugins.tsn.compile(
|
||||||
filesToConvertAbsolute,
|
filesToConvertAbsolute,
|
||||||
destDir
|
destDir,
|
||||||
|
compilerOptions(keyArg)
|
||||||
);
|
);
|
||||||
promiseArray.push(filesCompiledPromise);
|
promiseArray.push(filesCompiledPromise);
|
||||||
});
|
});
|
||||||
|
@ -1,33 +0,0 @@
|
|||||||
import "typings-global";
|
|
||||||
import plugins = require("./npmts.plugins");
|
|
||||||
import paths = require("./npmts.paths");
|
|
||||||
export var run = function(argvArg){
|
|
||||||
var done = plugins.Q.defer();
|
|
||||||
var config:any = {};
|
|
||||||
var configPath = plugins.path.join(paths.cwd,"npmts.json");
|
|
||||||
if(argvArg.notest){
|
|
||||||
config.notest = true;
|
|
||||||
}
|
|
||||||
if(plugins.smartfile.fs.fileExistsSync(configPath)){
|
|
||||||
plugins.beautylog.info("npmts.json".blue + " config file found!");
|
|
||||||
config = plugins.lodashObject.assign(
|
|
||||||
config,
|
|
||||||
plugins.smartfile.fs.toObjectSync(configPath)
|
|
||||||
);
|
|
||||||
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);
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
plugins.beautylog.log("no config file found: so mode is " + "default".yellow);
|
|
||||||
config.mode = "default";
|
|
||||||
done.resolve(config);
|
|
||||||
};
|
|
||||||
return done.promise;
|
|
||||||
};
|
|
@ -1,40 +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 let isCi = function(){
|
export type npmtsMode = "default" | "custom"
|
||||||
return plugins.smartci.check.isCi();
|
|
||||||
|
export interface npmtsConfig {
|
||||||
|
argv:any,
|
||||||
|
coverageTreshold:number,
|
||||||
|
docs:boolean,
|
||||||
|
mode: npmtsMode,
|
||||||
|
test:boolean,
|
||||||
|
testTs:any,
|
||||||
|
ts:any,
|
||||||
|
tsOptions:any
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export var run = function(configArg){
|
|
||||||
var done = plugins.Q.defer();
|
|
||||||
var config = configArg;
|
|
||||||
|
|
||||||
npmtsOra.text("now determining build options...");
|
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 = {};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
config.coverageTreshold ? void(0) : config.coverageTreshold = 70;
|
// mix with commandline
|
||||||
|
if(config.argv.notest){
|
||||||
|
config.test = false;
|
||||||
|
};
|
||||||
|
if(config.argv.nodocs){
|
||||||
|
config.docs = false;
|
||||||
|
};
|
||||||
|
|
||||||
// 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
|
||||||
|
@ -1,23 +1,24 @@
|
|||||||
import "typings-global";
|
import "typings-global";
|
||||||
export import beautylog = require("beautylog");
|
export import beautylog = require("beautylog");
|
||||||
export let gulp = require("gulp");
|
export let depcheck = require("depcheck");
|
||||||
|
export import gulp = require("gulp");
|
||||||
export let g = {
|
export let g = {
|
||||||
gFunction: require("gulp-function"),
|
babel: require("gulp-babel"),
|
||||||
istanbul: require("gulp-istanbul"),
|
istanbul: require("gulp-istanbul"),
|
||||||
|
gFunction: require("gulp-function"),
|
||||||
|
injectModules: require("gulp-inject-modules"),
|
||||||
mocha: require("gulp-mocha"),
|
mocha: require("gulp-mocha"),
|
||||||
replace: require("gulp-replace"),
|
|
||||||
sourcemaps: require("gulp-sourcemaps"),
|
sourcemaps: require("gulp-sourcemaps"),
|
||||||
typedoc: require("gulp-typedoc")
|
typedoc: require("gulp-typedoc")
|
||||||
};
|
};
|
||||||
export let lodashObject = require('lodash/fp/object');
|
export import lodashObject = require('lodash');
|
||||||
export let merge2 = require("merge2");
|
export import npmextra = require("npmextra");
|
||||||
export import projectinfo = require("projectinfo");
|
export import projectinfo = require("projectinfo");
|
||||||
export import path = require("path");
|
export import path = require("path");
|
||||||
export import Q = require("q");
|
export import Q = require("q");
|
||||||
export import shelljs = require("shelljs");
|
export import shelljs = require("shelljs");
|
||||||
export let smartci = require("smartci");
|
|
||||||
export import smartcli = require("smartcli");
|
export import smartcli = require("smartcli");
|
||||||
export let smartcov = require("smartcov");
|
export import smartcov = require("smartcov");
|
||||||
export import smartenv = require("smartenv");
|
export import smartenv = require("smartenv");
|
||||||
export import smartfile = require("smartfile");
|
export import smartfile = require("smartfile");
|
||||||
export import smartpath = require("smartpath");
|
export import smartpath = require("smartpath");
|
||||||
|
@ -5,9 +5,9 @@ import {Ora} from "beautylog"
|
|||||||
export let npmtsOra = new plugins.beautylog.Ora("setting up TaskChain","cyan");
|
export let npmtsOra = new plugins.beautylog.Ora("setting up TaskChain","cyan");
|
||||||
|
|
||||||
import NpmtsAssets = require("./npmts.assets");
|
import NpmtsAssets = require("./npmts.assets");
|
||||||
|
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");
|
||||||
@ -15,9 +15,9 @@ 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(NpmtsCompile.run)
|
.then(NpmtsCompile.run)
|
||||||
.then(NpmtsAssets.run)
|
.then(NpmtsAssets.run)
|
||||||
.then(NpmtsTypeDoc.run)
|
.then(NpmtsTypeDoc.run)
|
||||||
|
@ -7,51 +7,53 @@ import {npmtsOra} from "./npmts.promisechain";
|
|||||||
*
|
*
|
||||||
* @returns {*}
|
* @returns {*}
|
||||||
*/
|
*/
|
||||||
let istanbul = function (configArg) {
|
let mocha = function (configArg) {
|
||||||
npmtsOra.text("Instrumentalizing transpiled JS...");
|
npmtsOra.text("Instrumentalizing and testing transpiled JS");
|
||||||
|
npmtsOra.end(); // end npmtsOra for tests.
|
||||||
let done = plugins.Q.defer();
|
let done = plugins.Q.defer();
|
||||||
var stream = plugins.gulp.src([plugins.path.join(paths.cwd,"dist/*.js")])
|
var stream = plugins.gulp.src([plugins.path.join(paths.cwd,"dist/*.js")])
|
||||||
.pipe(plugins.g.sourcemaps.init())
|
.pipe(plugins.g.sourcemaps.init())
|
||||||
.pipe(plugins.g.istanbul()) // Covering files
|
.pipe(plugins.g.babel({
|
||||||
|
presets: [
|
||||||
|
require.resolve("babel-preset-es2015")
|
||||||
|
]
|
||||||
|
}))
|
||||||
|
.pipe(plugins.g.istanbul({
|
||||||
|
}))
|
||||||
.pipe(plugins.g.sourcemaps.write())
|
.pipe(plugins.g.sourcemaps.write())
|
||||||
.pipe(plugins.g.istanbul.hookRequire()) // Force `require` to return covered files
|
.pipe(plugins.g.injectModules())
|
||||||
.pipe(plugins.g.gFunction(function(){
|
.on("finish",function(){
|
||||||
plugins.beautylog.ok("JS has been instrumentalized to get test code coverage!");
|
plugins.gulp.src([plugins.path.join(paths.cwd,"test/test.js")])
|
||||||
done.resolve(configArg);
|
.pipe(plugins.g.babel({
|
||||||
},"atEnd"));
|
presets: [
|
||||||
return done.promise;
|
require.resolve("babel-preset-es2015")
|
||||||
};
|
]
|
||||||
|
}))
|
||||||
/**
|
.pipe(plugins.g.injectModules())
|
||||||
*
|
.pipe(plugins.g.mocha())
|
||||||
* @returns {*}
|
.pipe(plugins.g.istanbul.writeReports({
|
||||||
*/
|
dir: plugins.path.join(paths.cwd,"./coverage"),
|
||||||
let mocha = function (configArg) {
|
reporters: [ 'lcovonly', 'json', 'text', 'text-summary']
|
||||||
let done = plugins.Q.defer();
|
}))
|
||||||
npmtsOra.end(); // end npmtsOra for tests.
|
.pipe(plugins.g.gFunction(function(){
|
||||||
let stream = plugins.gulp.src(["./test/test.js"])
|
plugins.beautylog.ok("Tested!");
|
||||||
.pipe(plugins.g.mocha())
|
done.resolve(configArg);
|
||||||
.pipe(plugins.g.istanbul.writeReports()) // Creating the reports after tests ran
|
},"atEnd"));
|
||||||
.pipe(plugins.g.gFunction(function(){
|
});
|
||||||
plugins.beautylog.ok("Tests have passed!");
|
|
||||||
done.resolve(configArg);
|
|
||||||
},"atEnd"));
|
|
||||||
return done.promise;
|
return done.promise;
|
||||||
};
|
};
|
||||||
|
|
||||||
let coverage = function(configArg){
|
let coverage = function(configArg){
|
||||||
let done = plugins.Q.defer();
|
let done = plugins.Q.defer();
|
||||||
plugins.smartcov.get.percentage(plugins.path.join(paths.coverageDir,"lcov.info"))
|
plugins.smartcov.get.percentage(plugins.path.join(paths.coverageDir,"lcov.info"),2)
|
||||||
.then(function(percentageArg){
|
.then(function(percentageArg){
|
||||||
if (percentageArg >= configArg.coverageTreshold){
|
if (percentageArg >= configArg.coverageTreshold){
|
||||||
plugins.beautylog.ok(
|
plugins.beautylog.ok(
|
||||||
"your coverage of " + percentageArg.toString().blue + "% ".blue + "exceeds your treshold of " +
|
`${percentageArg.toString()}% coverage exceeds your treshold of ${configArg.coverageTreshold.toString()}%`
|
||||||
configArg.coverageTreshold.toString().blue + "%".blue
|
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
plugins.beautylog.warn(
|
plugins.beautylog.warn(
|
||||||
"your coverage of " + percentageArg + "% " + "fails your treshold of " +
|
`${percentageArg.toString()}% coverage fails your treshold of ${configArg.coverageTreshold.toString()}%`
|
||||||
configArg.coverageTreshold + "%"
|
|
||||||
);
|
);
|
||||||
plugins.beautylog.error("exiting due to coverage failure");
|
plugins.beautylog.error("exiting due to coverage failure");
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
@ -64,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" +
|
||||||
@ -72,8 +74,7 @@ export let run = function(configArg) {
|
|||||||
"--------------------------------------------------------------"
|
"--------------------------------------------------------------"
|
||||||
);
|
);
|
||||||
|
|
||||||
istanbul(config)
|
mocha(config)
|
||||||
.then(mocha)
|
|
||||||
.then(coverage)
|
.then(coverage)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
done.resolve(config);
|
done.resolve(config);
|
||||||
|
@ -1,40 +1,44 @@
|
|||||||
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){
|
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: "my-project",
|
||||||
|
|
||||||
//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