diff --git a/.gitignore b/.gitignore
index 990d88b..664c487 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,6 @@
node_modules/
test/
pages/
+public/
+npm-debug/
.DS_Store
\ No newline at end of file
diff --git a/README.md b/README.md
index 79f195f..ab0ede0 100644
--- a/README.md
+++ b/README.md
@@ -31,6 +31,12 @@ npmts will
This works on your machine and in CI. There is a prebuild 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.
+For further information read the docs:
+ * [1. Intro](https://pushrocks.gitlab.io/npmts/gitbook/index.md)
+ * [2. Install](https://pushrocks.gitlab.io/npmts/gitbook/install.md)
+ * [3. Default Behaviour](https://pushrocks.gitlab.io/npmts/gitbook/default.md)
+ * [4. Configuration](https://pushrocks.gitlab.io/npmts/gitbook/config.md)
+ * [5. Examples](https://pushrocks.gitlab.io/npmts/gitbook/examples.md)
+ * [6. Info](https://pushrocks.gitlab.io/npmts/gitbook/info.md)
[![npm](https://push.rocks/assets/repo-header.svg)](https://push.rocks)
diff --git a/dist/npmts.plugins.d.ts b/dist/npmts.plugins.d.ts
index 79bf093..eea1be2 100644
--- a/dist/npmts.plugins.d.ts
+++ b/dist/npmts.plugins.d.ts
@@ -23,6 +23,7 @@ export import smartcov = require('smartcov');
export import smartenv = require('smartenv');
export import smartfile = require('smartfile');
export import smartpath = require('smartpath');
+export import smartstream = require('smartstream');
export import smartstring = require('smartstring');
export declare let sourceMapSupport: any;
export import tsn = require('tsn');
diff --git a/dist/npmts.plugins.js b/dist/npmts.plugins.js
index 6ee61f3..2a3639c 100644
--- a/dist/npmts.plugins.js
+++ b/dist/npmts.plugins.js
@@ -24,6 +24,7 @@ exports.smartcov = require("smartcov");
exports.smartenv = require("smartenv");
exports.smartfile = require("smartfile");
exports.smartpath = require("smartpath");
+exports.smartstream = require("smartstream");
exports.smartstring = require("smartstring");
exports.sourceMapSupport = require('source-map-support').install(); // display errors correctly during testing
exports.tsn = require("tsn");
diff --git a/dist/npmts.tests.d.ts b/dist/npmts.tests.d.ts
index deb1665..cac7e20 100644
--- a/dist/npmts.tests.d.ts
+++ b/dist/npmts.tests.d.ts
@@ -1,4 +1,5 @@
///
import 'typings-global';
import plugins = require('./npmts.plugins');
-export declare let run: (configArg: any) => plugins.q.Promise<{}>;
+import { INpmtsConfig } from './npmts.options';
+export declare let run: (configArg: INpmtsConfig) => plugins.q.Promise<{}>;
diff --git a/dist/npmts.tests.js b/dist/npmts.tests.js
index 0b023ef..8ff5458 100644
--- a/dist/npmts.tests.js
+++ b/dist/npmts.tests.js
@@ -4,8 +4,8 @@ const plugins = require("./npmts.plugins");
const paths = require("./npmts.paths");
const npmts_promisechain_1 = require("./npmts.promisechain");
/**
- *
- * @returns {*}
+ * runs mocha
+ * @returns INpmtsConfig
*/
let mocha = function (configArg) {
npmts_promisechain_1.npmtsOra.text('Instrumentalizing and testing transpiled JS');
@@ -22,22 +22,31 @@ let mocha = function (configArg) {
.pipe(plugins.g.sourcemaps.write())
.pipe(plugins.g.injectModules())
.on('finish', function () {
- plugins.gulp.src([plugins.path.join(paths.cwd, 'test/test.js')])
- .pipe(plugins.g.babel({
- presets: [
- require.resolve('babel-preset-es2015')
- ]
- }))
- .pipe(plugins.g.injectModules())
- .pipe(plugins.g.mocha())
- .pipe(plugins.g.istanbul.writeReports({
- dir: plugins.path.join(paths.cwd, './coverage'),
- reporters: ['lcovonly', 'json', 'text', 'text-summary']
- }))
- .pipe(plugins.g.gFunction(function () {
- plugins.beautylog.ok('Tested!');
- done.resolve(configArg);
- }, 'atEnd'));
+ let localSmartstream = new plugins.smartstream.Smartstream([
+ plugins.gulp.src([plugins.path.join(paths.cwd, 'test/test.js')]),
+ plugins.g.babel({
+ presets: [
+ require.resolve('babel-preset-es2015')
+ ]
+ }),
+ plugins.g.injectModules(),
+ plugins.g.mocha(),
+ plugins.g.istanbul.writeReports({
+ dir: plugins.path.join(paths.cwd, './coverage'),
+ reporters: ['lcovonly', 'json', 'text', 'text-summary']
+ })
+ ]);
+ localSmartstream.run()
+ .then(() => { done.resolve(configArg); }, (err) => {
+ plugins.beautylog.error('Tests failed!');
+ configArg.watch = true;
+ if (configArg.watch) {
+ done.resolve(configArg);
+ }
+ else {
+ process.exit(1);
+ }
+ });
});
return done.promise;
};
@@ -55,7 +64,9 @@ let coverage = function (configArg) {
+ `coverage fails your treshold of `
+ `${configArg.coverageTreshold.toString()}%`);
plugins.beautylog.error('exiting due to coverage failure');
- process.exit(1);
+ if (!configArg.watch) {
+ process.exit(1);
+ }
}
done.resolve(configArg);
});
diff --git a/dist/npmts.watch.d.ts b/dist/npmts.watch.d.ts
index 21cbece..0c6b4b8 100644
--- a/dist/npmts.watch.d.ts
+++ b/dist/npmts.watch.d.ts
@@ -1,3 +1,4 @@
///
import * as plugins from './npmts.plugins';
-export declare let run: (configArg: any) => plugins.q.Promise<{}>;
+import { INpmtsConfig } from './npmts.options';
+export declare let run: (configArg: INpmtsConfig) => plugins.q.Promise<{}>;
diff --git a/dist/npmts.watch.js b/dist/npmts.watch.js
index 9c03d2f..8812029 100644
--- a/dist/npmts.watch.js
+++ b/dist/npmts.watch.js
@@ -9,6 +9,9 @@ exports.run = (configArg) => {
for (let key in configArg.ts) {
pathsToWatch.push(key);
}
+ for (let key in configArg.testTs) {
+ pathsToWatch.push(key);
+ }
npmtsSmartchok = new plugins.smartchok.Smartchok(pathsToWatch);
npmtsSmartchok.getObservableFor('change').then((changeObservableArg) => {
plugins.beautylog.info('now watching...');
diff --git a/docs/index.md b/docs/index.md
new file mode 100644
index 0000000..ab0ede0
--- /dev/null
+++ b/docs/index.md
@@ -0,0 +1,42 @@
+# npmts
+Write npm modules with TypeScript without hassle. TypeScript ready. Fully ES6.
+
+## Availabililty
+[![npm](https://push.rocks/assets/repo-button-npm.svg)](https://www.npmjs.com/package/npmts)
+[![git](https://push.rocks/assets/repo-button-git.svg)](https://gitlab.com/pushrocks/npmts)
+[![git](https://push.rocks/assets/repo-button-mirror.svg)](https://github.com/pushrocks/npmts)
+[![docs](https://push.rocks/assets/repo-button-docs.svg)](https://pushrocks.gitlab.io/npmts/gitbook)
+
+## Status for master
+[![build status](https://gitlab.com/pushrocks/npmts/badges/master/build.svg)](https://gitlab.com/pushrocks/npmts/commits/master)
+[![coverage report](https://gitlab.com/pushrocks/npmts/badges/master/coverage.svg)](https://gitlab.com/pushrocks/npmts/commits/master)
+[![Dependency Status](https://david-dm.org/pushrocks/npmts.svg)](https://david-dm.org/pushrocks/npmts)
+[![bitHound Dependencies](https://www.bithound.io/github/pushrocks/npmts/badges/dependencies.svg)](https://www.bithound.io/github/pushrocks/npmts/master/dependencies/npm)
+[![bitHound Code](https://www.bithound.io/github/pushrocks/npmts/badges/code.svg)](https://www.bithound.io/github/pushrocks/npmts)
+[![TypeScript](https://img.shields.io/badge/TypeScript-2.x-blue.svg)](https://nodejs.org/dist/latest-v6.x/docs/api/)
+[![node](https://img.shields.io/badge/node->=%206.x.x-blue.svg)](https://nodejs.org/dist/latest-v6.x/docs/api/)
+[![JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/)
+
+## Introduction
+NPMTS is your friend when writing, testing, publishing and documenting npm modules written in TypeScript.
+
+npmts will
+
+1. check your dependencies and package.json
+1. transpile your code with tsc,
+1. document your code with typedoc,
+1. test your code with mocha
+1. create coverage with istanbul
+
+This works on your machine and in CI. There is a prebuild 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:
+ * [1. Intro](https://pushrocks.gitlab.io/npmts/gitbook/index.md)
+ * [2. Install](https://pushrocks.gitlab.io/npmts/gitbook/install.md)
+ * [3. Default Behaviour](https://pushrocks.gitlab.io/npmts/gitbook/default.md)
+ * [4. Configuration](https://pushrocks.gitlab.io/npmts/gitbook/config.md)
+ * [5. Examples](https://pushrocks.gitlab.io/npmts/gitbook/examples.md)
+ * [6. Info](https://pushrocks.gitlab.io/npmts/gitbook/info.md)
+
+[![npm](https://push.rocks/assets/repo-header.svg)](https://push.rocks)
diff --git a/gitbook/index.md b/gitbook/index.md
index b8aae54..ab0ede0 100644
--- a/gitbook/index.md
+++ b/gitbook/index.md
@@ -5,7 +5,7 @@ Write npm modules with TypeScript without hassle. TypeScript ready. Fully ES6.
[![npm](https://push.rocks/assets/repo-button-npm.svg)](https://www.npmjs.com/package/npmts)
[![git](https://push.rocks/assets/repo-button-git.svg)](https://gitlab.com/pushrocks/npmts)
[![git](https://push.rocks/assets/repo-button-mirror.svg)](https://github.com/pushrocks/npmts)
-[![docs](https://push.rocks/assets/repo-button-docs.svg)](https://pushrocks.gitlab.io/npmts/docs)
+[![docs](https://push.rocks/assets/repo-button-docs.svg)](https://pushrocks.gitlab.io/npmts/gitbook)
## Status for master
[![build status](https://gitlab.com/pushrocks/npmts/badges/master/build.svg)](https://gitlab.com/pushrocks/npmts/commits/master)
@@ -31,6 +31,12 @@ npmts will
This works on your machine and in CI. There is a prebuild 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.
+For further information read the docs:
+ * [1. Intro](https://pushrocks.gitlab.io/npmts/gitbook/index.md)
+ * [2. Install](https://pushrocks.gitlab.io/npmts/gitbook/install.md)
+ * [3. Default Behaviour](https://pushrocks.gitlab.io/npmts/gitbook/default.md)
+ * [4. Configuration](https://pushrocks.gitlab.io/npmts/gitbook/config.md)
+ * [5. Examples](https://pushrocks.gitlab.io/npmts/gitbook/examples.md)
+ * [6. Info](https://pushrocks.gitlab.io/npmts/gitbook/info.md)
[![npm](https://push.rocks/assets/repo-header.svg)](https://push.rocks)
diff --git a/npm-debug.log b/npm-debug.log
new file mode 100644
index 0000000..81d8662
--- /dev/null
+++ b/npm-debug.log
@@ -0,0 +1,32 @@
+0 info it worked if it ends with ok
+1 verbose cli [ '/Users/philkunz/.nvm/versions/node/v6.5.0/bin/node',
+1 verbose cli '/Users/philkunz/.nvm/versions/node/v6.5.0/bin/npm',
+1 verbose cli 'version',
+1 verbose cli 'patch' ]
+2 info using npm@3.10.3
+3 info using node@v6.5.0
+4 info git [ 'status', '--porcelain' ]
+5 verbose stack Error: Git working directory not clean.
+5 verbose stack M README.md
+5 verbose stack M gitbook/index.md
+5 verbose stack at /Users/philkunz/.nvm/versions/node/v6.5.0/lib/node_modules/npm/lib/version.js:247:19
+5 verbose stack at /Users/philkunz/.nvm/versions/node/v6.5.0/lib/node_modules/npm/lib/utils/no-progress-while-running.js:21:8
+5 verbose stack at ChildProcess.exithandler (child_process.js:197:7)
+5 verbose stack at emitTwo (events.js:106:13)
+5 verbose stack at ChildProcess.emit (events.js:191:7)
+5 verbose stack at maybeClose (internal/child_process.js:877:16)
+5 verbose stack at Socket. (internal/child_process.js:334:11)
+5 verbose stack at emitOne (events.js:96:13)
+5 verbose stack at Socket.emit (events.js:188:7)
+5 verbose stack at Pipe._handle.close [as _onclose] (net.js:493:12)
+6 verbose cwd /Users/philkunz/gitlab/pushrocks/npmts
+7 error Darwin 16.0.0
+8 error argv "/Users/philkunz/.nvm/versions/node/v6.5.0/bin/node" "/Users/philkunz/.nvm/versions/node/v6.5.0/bin/npm" "version" "patch"
+9 error node v6.5.0
+10 error npm v3.10.3
+11 error Git working directory not clean.
+11 error M README.md
+11 error M gitbook/index.md
+12 error If you need help, you may report this error at:
+12 error
+13 verbose exit [ 1, true ]
diff --git a/package.json b/package.json
index b17f632..fe99c6a 100644
--- a/package.json
+++ b/package.json
@@ -51,7 +51,7 @@
"gulp-sourcemaps": "^1.6.0",
"gulp-typedoc": "^2.0.0",
"lodash": "^4.16.1",
- "npmextra": "^2.0.1",
+ "npmextra": "^2.0.3",
"projectinfo": "1.0.3",
"q": "^1.4.1",
"shelljs": "^0.7.4",
@@ -59,8 +59,9 @@
"smartcli": "1.0.9",
"smartcov": "1.0.0",
"smartenv": "1.2.5",
- "smartfile": "4.0.20",
+ "smartfile": "4.0.21",
"smartpath": "3.2.2",
+ "smartstream": "^1.0.5",
"smartstring": "^2.0.17",
"source-map-support": "^0.4.2",
"tsn": "^2.0.3",
diff --git a/ts/npmts.plugins.ts b/ts/npmts.plugins.ts
index b98ba70..4b34779 100644
--- a/ts/npmts.plugins.ts
+++ b/ts/npmts.plugins.ts
@@ -23,6 +23,7 @@ export import smartcov = require('smartcov')
export import smartenv = require('smartenv')
export import smartfile = require('smartfile')
export import smartpath = require('smartpath')
+export import smartstream = require('smartstream')
export import smartstring = require('smartstring')
export let sourceMapSupport = require('source-map-support').install() // display errors correctly during testing
export import tsn = require('tsn')
diff --git a/ts/npmts.tests.ts b/ts/npmts.tests.ts
index 26253f4..e460b0f 100644
--- a/ts/npmts.tests.ts
+++ b/ts/npmts.tests.ts
@@ -2,12 +2,13 @@ import 'typings-global'
import plugins = require('./npmts.plugins')
import paths = require('./npmts.paths')
import { npmtsOra } from './npmts.promisechain'
+import { INpmtsConfig } from './npmts.options'
/**
- *
- * @returns {*}
+ * runs mocha
+ * @returns INpmtsConfig
*/
-let mocha = function (configArg) {
+let mocha = function (configArg: INpmtsConfig) {
npmtsOra.text('Instrumentalizing and testing transpiled JS')
npmtsOra.end() // end npmtsOra for tests.
let done = plugins.q.defer()
@@ -23,30 +24,34 @@ let mocha = function (configArg) {
.pipe(plugins.g.sourcemaps.write())
.pipe(plugins.g.injectModules())
.on('finish', function () {
- plugins.gulp.src([plugins.path.join(paths.cwd, 'test/test.js')])
- .pipe(plugins.g.babel({
+ let localSmartstream = new plugins.smartstream.Smartstream([
+ plugins.gulp.src([plugins.path.join(paths.cwd, 'test/test.js')]),
+ plugins.g.babel({
presets: [
require.resolve('babel-preset-es2015')
]
- }))
- .pipe(plugins.g.injectModules())
- .pipe(plugins.g.mocha())
- .pipe(plugins.g.istanbul.writeReports({
+ }),
+ plugins.g.injectModules(),
+ plugins.g.mocha(),
+ plugins.g.istanbul.writeReports({
dir: plugins.path.join(paths.cwd, './coverage'),
reporters: ['lcovonly', 'json', 'text', 'text-summary']
- }))
- .pipe(plugins.g.gFunction(
- function () {
- plugins.beautylog.ok('Tested!')
+ })
+ ])
+ localSmartstream.run()
+ .then(() => { done.resolve(configArg) }, (err) => {
+ plugins.beautylog.error('Tests failed!')
+ if (configArg.watch) {
done.resolve(configArg)
- },
- 'atEnd'
- ))
+ } else {
+ process.exit(1)
+ }
+ })
})
return done.promise
}
-let coverage = function (configArg) {
+let coverage = function (configArg: INpmtsConfig) {
let done = plugins.q.defer()
plugins.smartcov.get.percentage(plugins.path.join(paths.coverageDir, 'lcov.info'), 2)
.then(function (percentageArg) {
@@ -63,14 +68,14 @@ let coverage = function (configArg) {
+ `${configArg.coverageTreshold.toString()}%`
)
plugins.beautylog.error('exiting due to coverage failure')
- process.exit(1)
+ if (!configArg.watch) { process.exit(1) }
}
done.resolve(configArg)
})
return done.promise
}
-export let run = function (configArg) {
+export let run = function (configArg: INpmtsConfig) {
let done = plugins.q.defer()
let config = configArg
if (config.test === true) {
diff --git a/ts/npmts.watch.ts b/ts/npmts.watch.ts
index 9bb220d..f69422b 100644
--- a/ts/npmts.watch.ts
+++ b/ts/npmts.watch.ts
@@ -1,14 +1,18 @@
import * as plugins from './npmts.plugins'
import * as promisechain from './npmts.promisechain'
let npmtsSmartchok: plugins.smartchok.Smartchok = null
+import { INpmtsConfig } from './npmts.options'
-export let run = (configArg) => {
+export let run = (configArg: INpmtsConfig) => {
let done = plugins.q.defer()
if (configArg.watch && npmtsSmartchok === null) {
let pathsToWatch: string[] = []
for (let key in configArg.ts) {
pathsToWatch.push(key)
}
+ for (let key in configArg.testTs) {
+ pathsToWatch.push(key)
+ }
npmtsSmartchok = new plugins.smartchok.Smartchok(pathsToWatch)
npmtsSmartchok.getObservableFor('change').then((changeObservableArg) => {
plugins.beautylog.info('now watching...')