Compare commits

...

21 Commits

Author SHA1 Message Date
bd3873a359 7.1.0 2017-05-13 10:22:06 +02:00
6ec0ccac34 add sourcemap support for tests 2017-05-13 10:21:55 +02:00
9bff7db97b 7.0.18 2017-05-05 00:23:16 +02:00
2305be0daa update docs and include terminal session. 2017-05-05 00:23:04 +02:00
9cd24695db 7.0.17 2017-05-05 00:01:24 +02:00
46c79e711b now looking for coverage percentage being actually present, fixes #22 2017-05-05 00:01:21 +02:00
4b07c9951f update readme 2017-05-04 23:28:28 +02:00
559b5553eb 7.0.16 2017-05-01 22:43:35 +02:00
87ceed6f8f fix smartgulp 2017-05-01 22:43:32 +02:00
ee36914a42 7.0.15 2017-05-01 20:35:27 +02:00
7dc6cdb250 intermediate fix untel figuring out pathing problems with smartgulp 2017-05-01 20:35:24 +02:00
3ea6585992 7.0.14 2017-04-30 18:22:37 +02:00
0f0592cdaf replace gulp 2017-04-30 18:22:34 +02:00
cf438ae431 7.0.13 2017-04-22 13:00:05 +02:00
6cbf7cedc8 update dependencies 2017-04-22 13:00:02 +02:00
77bba7f865 7.0.12 2017-04-21 19:07:07 +02:00
49fc7e4687 update docs 2017-04-21 19:06:22 +02:00
7ee0c349e3 7.0.11 2017-04-21 13:35:24 +02:00
f706376e48 update to latest dependencies 2017-04-21 13:35:21 +02:00
8d8cdde15d 7.0.10 2017-04-21 00:38:36 +02:00
dc98d893b1 update dependencies 2017-04-21 00:38:32 +02:00
20 changed files with 765 additions and 1013 deletions

View File

@ -1,6 +1,11 @@
# standard ci # gitzone standard
image: hosttoday/ht-docker-node:npmci image: hosttoday/ht-docker-node:npmci
cache:
paths:
- .yarn/
key: "$CI_BUILD_STAGE"
stages: stages:
- test - test
- release - release
@ -11,6 +16,7 @@ testLEGACY:
stage: test stage: test
script: script:
- npmci test legacy - npmci test legacy
coverage: /\d+.?\d+?\%\s*coverage/
tags: tags:
- docker - docker
allow_failure: true allow_failure: true
@ -19,6 +25,7 @@ testLTS:
stage: test stage: test
script: script:
- npmci test lts - npmci test lts
coverage: /\d+.?\d+?\%\s*coverage/
tags: tags:
- docker - docker
@ -26,6 +33,7 @@ testSTABLE:
stage: test stage: test
script: script:
- npmci test stable - npmci test stable
coverage: /\d+.?\d+?\%\s*coverage/
tags: tags:
- docker - docker
@ -52,11 +60,11 @@ pages:
stage: pages stage: pages
script: script:
- npmci command yarn global add npmpage - npmci command yarn global add npmpage
- npmci command npmpage - npmci command npmpage --publish gitlab
only:
- tags
tags: tags:
- docker - docker
only:
- tags
artifacts: artifacts:
expire_in: 1 week expire_in: 1 week
paths: paths:

2
dist/index.js vendored
View File

@ -1,8 +1,8 @@
"use strict";
/* ================================================== * /* ================================================== *
**** NPMTS **** **** NPMTS ****
Fabulous TypeScript development Fabulous TypeScript development
* ================================================== */ * ================================================== */
"use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
const early = require("early"); const early = require("early");
early.start('NPMTS'); early.start('NPMTS');

View File

@ -85,7 +85,7 @@ let checkDevDependencies = (configArg) => {
plugins.beautylog.log(`unused devDependency ${item}`); plugins.beautylog.log(`unused devDependency ${item}`);
} }
for (let item in unused.missing) { for (let item in unused.missing) {
plugins.beautylog.error(`unused devDependency ${item}`); plugins.beautylog.error(`missing devDependency ${item}`);
} }
if (unused.missing.length > 0) { if (unused.missing.length > 0) {
plugins.beautylog.info('exiting due to missing dependencies in package.json'); plugins.beautylog.info('exiting due to missing dependencies in package.json');

46
dist/mod02/index.js vendored
View File

@ -28,7 +28,26 @@ let tap = function (configArg) {
* handle the testable files * handle the testable files
*/ */
let testableFilesSmartstream = new plugins.smartstream.Smartstream([ let testableFilesSmartstream = new plugins.smartstream.Smartstream([
plugins.gulp.src([plugins.path.join(paths.cwd, './ts/**/*.ts')]), plugins.smartgulp.src([plugins.path.join(paths.cwd, './ts/**/*.ts')]),
plugins.gulpSourcemaps.init(),
plugins.gulpTypeScript({
target: 'ES5',
emitDecoratorMetadata: true,
experimentalDecorators: true,
lib: ['DOM', 'ES5', 'ES2015.Promise', 'ES2015.Generator', 'ES2015.Iterable']
}),
plugins.gulpFunction.forEach((file) => __awaiter(this, void 0, void 0, function* () {
file.path = file.path.replace(paths.tsDir, paths.distDir);
})),
plugins.gulpSourcemaps.write(),
npmtsTapBuffer.pipeTestableFiles(),
plugins.smartstream.cleanPipe()
]);
/**
* handle the test files
*/
let testFilesSmartstream = new plugins.smartstream.Smartstream([
plugins.smartgulp.src([plugins.path.join(paths.cwd, 'test/*.ts')]),
plugins.gulpSourcemaps.init(), plugins.gulpSourcemaps.init(),
plugins.gulpTypeScript({ plugins.gulpTypeScript({
target: 'ES5', target: 'ES5',
@ -37,23 +56,6 @@ let tap = function (configArg) {
lib: ['DOM', 'ES5', 'ES2015.Promise', 'ES2015.Generator', 'ES2015.Iterable'] lib: ['DOM', 'ES5', 'ES2015.Promise', 'ES2015.Generator', 'ES2015.Iterable']
}), }),
plugins.gulpSourcemaps.write(), plugins.gulpSourcemaps.write(),
plugins.gulpFunction.forEach((file) => __awaiter(this, void 0, void 0, function* () {
file.path = file.path.replace(paths.tsDir, paths.distDir);
})),
npmtsTapBuffer.pipeTestableFiles(),
plugins.smartstream.cleanPipe()
]);
/**
* handle the test files
*/
let testFilesSmartstream = new plugins.smartstream.Smartstream([
plugins.gulp.src([plugins.path.join(paths.cwd, 'test/*.ts')]),
plugins.gulpTypeScript({
target: 'ES5',
emitDecoratorMetadata: true,
experimentalDecorators: true,
lib: ['DOM', 'ES5', 'ES2015.Promise', 'ES2015.Generator', 'ES2015.Iterable']
}),
npmtsTapBuffer.pipeTestFiles(), npmtsTapBuffer.pipeTestFiles(),
plugins.smartstream.cleanPipe() plugins.smartstream.cleanPipe()
]); ]);
@ -77,7 +79,13 @@ let tap = function (configArg) {
return done.promise; return done.promise;
}; };
let handleCoverageData = (configArg) => __awaiter(this, void 0, void 0, function* () { let handleCoverageData = (configArg) => __awaiter(this, void 0, void 0, function* () {
let coverageResult = yield plugins.smartcov.get.percentageFromLcovString(configArg.runData.coverageLcovInfo, 2); let coverageResult = 0; // the coverage in percent
if (configArg.runData.coverageLcovInfo) {
coverageResult = yield plugins.smartcov.get.percentageFromLcovString(configArg.runData.coverageLcovInfo, 2);
}
else {
plugins.beautylog.warn('Hey... Did your tests import and use your module that you are trying to test?');
}
if (coverageResult >= configArg.coverageTreshold) { if (coverageResult >= configArg.coverageTreshold) {
plugins.beautylog.ok(`${(coverageResult).toString()}% ` plugins.beautylog.ok(`${(coverageResult).toString()}% `
+ `coverage exceeds your treshold of ` + `coverage exceeds your treshold of `

View File

@ -1,8 +1,8 @@
export * from '../npmts.plugins'; export * from '../npmts.plugins';
import * as gulp from 'gulp';
import * as gulpFunction from 'gulp-function'; import * as gulpFunction from 'gulp-function';
import * as gulpSourcemaps from 'gulp-sourcemaps'; import * as gulpSourcemaps from 'gulp-sourcemaps';
import * as gulpTypeScript from 'gulp-typescript'; import * as gulpTypeScript from 'gulp-typescript';
import * as smartcov from 'smartcov'; import * as smartcov from 'smartcov';
import * as smartgulp from 'smartgulp';
import * as tapbuffer from 'tapbuffer'; import * as tapbuffer from 'tapbuffer';
export { gulp, gulpFunction, gulpSourcemaps, gulpTypeScript, smartcov, tapbuffer }; export { gulpFunction, gulpSourcemaps, gulpTypeScript, smartcov, smartgulp, tapbuffer };

View File

@ -4,8 +4,6 @@ function __export(m) {
} }
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
__export(require("../npmts.plugins")); __export(require("../npmts.plugins"));
const gulp = require("gulp");
exports.gulp = gulp;
const gulpFunction = require("gulp-function"); const gulpFunction = require("gulp-function");
exports.gulpFunction = gulpFunction; exports.gulpFunction = gulpFunction;
const gulpSourcemaps = require("gulp-sourcemaps"); const gulpSourcemaps = require("gulp-sourcemaps");
@ -14,5 +12,7 @@ const gulpTypeScript = require("gulp-typescript");
exports.gulpTypeScript = gulpTypeScript; exports.gulpTypeScript = gulpTypeScript;
const smartcov = require("smartcov"); const smartcov = require("smartcov");
exports.smartcov = smartcov; exports.smartcov = smartcov;
const smartgulp = require("smartgulp");
exports.smartgulp = smartgulp;
const tapbuffer = require("tapbuffer"); const tapbuffer = require("tapbuffer");
exports.tapbuffer = tapbuffer; exports.tapbuffer = tapbuffer;

View File

@ -7,7 +7,6 @@ import * as projectinfo from 'projectinfo';
import * as path from 'path'; import * as path from 'path';
import * as smartanalytics from 'smartanalytics'; import * as smartanalytics from 'smartanalytics';
import * as smartcli from 'smartcli'; import * as smartcli from 'smartcli';
import * as smartenv from 'smartenv';
import * as smartfile from 'smartfile'; import * as smartfile from 'smartfile';
import * as smartpath from 'smartpath'; import * as smartpath from 'smartpath';
import * as smartstream from 'smartstream'; import * as smartstream from 'smartstream';
@ -15,4 +14,4 @@ import * as smartstring from 'smartstring';
import * as smartsystem from 'smartsystem'; import * as smartsystem from 'smartsystem';
import * as through2 from 'through2'; import * as through2 from 'through2';
export declare let sourceMapSupport: any; export declare let sourceMapSupport: any;
export { beautylog, depcheck, lodash, npmextra, projectinfo, path, smartanalytics, smartcli, smartenv, smartfile, smartpath, smartstream, smartstring, smartsystem, through2 }; export { beautylog, depcheck, lodash, npmextra, projectinfo, path, smartanalytics, smartcli, smartfile, smartpath, smartstream, smartstring, smartsystem, through2 };

View File

@ -17,8 +17,6 @@ const smartanalytics = require("smartanalytics");
exports.smartanalytics = smartanalytics; exports.smartanalytics = smartanalytics;
const smartcli = require("smartcli"); const smartcli = require("smartcli");
exports.smartcli = smartcli; exports.smartcli = smartcli;
const smartenv = require("smartenv");
exports.smartenv = smartenv;
const smartfile = require("smartfile"); const smartfile = require("smartfile");
exports.smartfile = smartfile; exports.smartfile = smartfile;
const smartpath = require("smartpath"); const smartpath = require("smartpath");

View File

@ -2,9 +2,7 @@
name: config name: config
--- ---
# Configuration # Configuration
## of npmts npmts can be configured to your needs.
npmts can be configured to your needs:
### npmextra.json ### npmextra.json
the npmts section in npmextra.json can be used to configure npmts. the npmts section in npmextra.json can be used to configure npmts.

View File

@ -2,7 +2,7 @@
name: Default Behaviour name: Default Behaviour
--- ---
# Default Behaviour # Default Behaviour
## of npmts when you don't configure it otherwise.
1. **Config:** Check config in ./npmextra.json (Check out [npmextra](https://www.npmjs.com/package/npmextra)) 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. **Clean:** Clean up from any previous builds (old js files)

View File

@ -2,14 +2,16 @@
name: Examples name: Examples
--- ---
# Examples # Examples
## of modules that use npmts modules that use npmts in theis development workflow
Module Name | Description Module Name | Description
--- | --- --- | ---
[gitzone](https://www.npmjs.com/package/gitzone) | fast npm module prototyping
[gulp-browser](https://www.npmjs.com/package/gulp-browser) | browserify for gulp [gulp-browser](https://www.npmjs.com/package/gulp-browser) | browserify for gulp
[npmdocker](https://www.npmjs.com/package/npmdocker) | dockerized npm development
[smartcli](https://www.npmjs.com/package/smartcli) | easy cli tool creation
> There are tons more... We will add them here over time.
> We will add more options over time.
### Tips and tricks: ### Tips and tricks:

View File

@ -2,7 +2,7 @@
name: Start name: Start
--- ---
# npmts # npmts
## Write npm modules with TypeScript without hassle. TypeScript ready. Fully ES6. Write npm modules with TypeScript without hassle. TypeScript ready. Fully ES6.
## Availabililty ## Availabililty
[![npm](https://gitzone.gitlab.io/assets/repo-button-npm.svg)](https://www.npmjs.com/package/npmts) [![npm](https://gitzone.gitlab.io/assets/repo-button-npm.svg)](https://www.npmjs.com/package/npmts)
@ -14,13 +14,16 @@ name: Start
[![build status](https://GitLab.com/gitzone/npmts/badges/master/build.svg)](https://GitLab.com/gitzone/npmts/commits/master) [![build status](https://GitLab.com/gitzone/npmts/badges/master/build.svg)](https://GitLab.com/gitzone/npmts/commits/master)
[![coverage report](https://GitLab.com/gitzone/npmts/badges/master/coverage.svg)](https://GitLab.com/gitzone/npmts/commits/master) [![coverage report](https://GitLab.com/gitzone/npmts/badges/master/coverage.svg)](https://GitLab.com/gitzone/npmts/commits/master)
[![npm downloads per month](https://img.shields.io/npm/dm/npmts.svg)](https://www.npmjs.com/package/npmts) [![npm downloads per month](https://img.shields.io/npm/dm/npmts.svg)](https://www.npmjs.com/package/npmts)
[![Dependency Status](https://david-dm.org/gitzone/npmts.svg)](https://david-dm.org/gitzone/npmts) [![Dependency Status](https://david-dm.org/gitzonetools/npmts.svg)](https://david-dm.org/gitzonetools/npmts)
[![bitHound Dependencies](https://www.bithound.io/github/gitzone/npmts/badges/dependencies.svg)](https://www.bithound.io/github/gitzone/npmts/master/dependencies/npm) [![bitHound Dependencies](https://www.bithound.io/github/gitzonetools/npmts/badges/dependencies.svg)](https://www.bithound.io/github/gitzonetools/npmts/master/dependencies/npm)
[![bitHound Code](https://www.bithound.io/github/gitzone/npmts/badges/code.svg)](https://www.bithound.io/github/gitzone/npmts) [![bitHound Code](https://www.bithound.io/github/gitzonetools/npmts/badges/code.svg)](https://www.bithound.io/github/gitzonetools/npmts)
[![TypeScript](https://img.shields.io/badge/TypeScript-2.x-blue.svg)](https://nodejs.org/dist/latest-v6.x/docs/api/) [![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/) [![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/) [![JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/)
## Quick Demo
[![asciicast](https://asciinema.org/a/9c3assmh21i49qhe5lmi48sze.png)](https://asciinema.org/a/9c3assmh21i49qhe5lmi48sze?speed=2&t=0)
## Usage ## Usage
NPMTS is your friend when writing, testing, publishing and documenting npm modules written in TypeScript. NPMTS is your friend when writing, testing, publishing and documenting npm modules written in TypeScript.
@ -39,4 +42,4 @@ This works on your machine and in CI. There is a prebuild docker image available
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh) > MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html) | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html)
[![repo-footer](https://gitzone.gitlab.io/assets/repo-footer.svg)](https://push.rocks) [![repo-footer](https://gitzone.gitlab.io/assets/repo-footer.svg)](https:/git.zone)

View File

@ -1,5 +1,5 @@
# Install npmts # Install npmts
First install npmts globally, then install the npmts-g locally. Get started with TypeScript awesomeness.
> **npmts-g* checks if the global version of npmts suffices the modules requirements. > **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. If not it installs npmts locally in the right version during npm install.

View File

@ -1,6 +1,6 @@
{ {
"name": "npmts", "name": "npmts",
"version": "7.0.9", "version": "7.1.0",
"description": "Write npm modules with TypeScript without hassle. TypeScript ready. Fully ES6.", "description": "Write npm modules with TypeScript without hassle. TypeScript ready. Fully ES6.",
"main": "dist/index.js", "main": "dist/index.js",
"bin": { "bin": {
@ -34,37 +34,35 @@
}, },
"homepage": "https://gitlab.com/gitzone/npmts#readme", "homepage": "https://gitlab.com/gitzone/npmts#readme",
"dependencies": { "dependencies": {
"@types/gulp": "^4.0.2",
"@types/gulp-sourcemaps": "0.0.30", "@types/gulp-sourcemaps": "0.0.30",
"@types/minimatch": "^2.0.29", "@types/minimatch": "^2.0.29",
"@types/through2": "^2.0.32", "@types/through2": "^2.0.32",
"beautylog": "6.1.5", "beautylog": "6.1.10",
"depcheck": "^0.6.7", "depcheck": "^0.6.7",
"early": "^2.0.38", "early": "^2.1.1",
"gulp": "3.9.1", "gulp-function": "^2.2.9",
"gulp-function": "^2.2.3",
"gulp-sourcemaps": "^2.6.0", "gulp-sourcemaps": "^2.6.0",
"gulp-typescript": "^3.1.6", "gulp-typescript": "^3.1.6",
"lodash": "^4.17.4", "lodash": "^4.17.4",
"npmextra": "^2.0.5", "npmextra": "^2.0.5",
"projectinfo": "^3.0.2", "projectinfo": "^3.0.2",
"smartanalytics": "^1.0.5", "smartanalytics": "^1.0.6",
"smartchok": "^1.0.8", "smartchok": "^1.0.8",
"smartcli": "^2.0.1", "smartcli": "^2.0.7",
"smartcov": "^1.0.2", "smartcov": "^1.0.2",
"smartenv": "2.0.0", "smartfile": "^4.2.11",
"smartfile": "^4.1.9", "smartgulp": "^1.0.5",
"smartpath": "^3.2.8", "smartpath": "^3.2.8",
"smartq": "^1.1.1", "smartq": "^1.1.1",
"smartstream": "^1.0.8", "smartstream": "^1.0.8",
"smartstring": "^2.0.24", "smartstring": "^2.0.24",
"smartsystem": "^1.0.12", "smartsystem": "^1.0.12",
"source-map-support": "^0.4.14", "source-map-support": "^0.4.15",
"tapbuffer": "^1.0.10", "tapbuffer": "^1.0.12",
"through2": "^2.0.3", "through2": "^2.0.3",
"tsn": "^2.0.15", "tsn": "^2.0.15",
"typescript": "^2.2.2", "typescript": "^2.3.2",
"typings-global": "^1.0.14" "typings-global": "^1.0.16"
}, },
"devDependencies": {} "devDependencies": {}
} }

View File

@ -11,18 +11,21 @@ Write npm modules with TypeScript without hassle. TypeScript ready. Fully ES6.
[![build status](https://GitLab.com/gitzone/npmts/badges/master/build.svg)](https://GitLab.com/gitzone/npmts/commits/master) [![build status](https://GitLab.com/gitzone/npmts/badges/master/build.svg)](https://GitLab.com/gitzone/npmts/commits/master)
[![coverage report](https://GitLab.com/gitzone/npmts/badges/master/coverage.svg)](https://GitLab.com/gitzone/npmts/commits/master) [![coverage report](https://GitLab.com/gitzone/npmts/badges/master/coverage.svg)](https://GitLab.com/gitzone/npmts/commits/master)
[![npm downloads per month](https://img.shields.io/npm/dm/npmts.svg)](https://www.npmjs.com/package/npmts) [![npm downloads per month](https://img.shields.io/npm/dm/npmts.svg)](https://www.npmjs.com/package/npmts)
[![Dependency Status](https://david-dm.org/gitzone/npmts.svg)](https://david-dm.org/gitzone/npmts) [![Dependency Status](https://david-dm.org/gitzonetools/npmts.svg)](https://david-dm.org/gitzonetools/npmts)
[![bitHound Dependencies](https://www.bithound.io/github/gitzone/npmts/badges/dependencies.svg)](https://www.bithound.io/github/gitzone/npmts/master/dependencies/npm) [![bitHound Dependencies](https://www.bithound.io/github/gitzonetools/npmts/badges/dependencies.svg)](https://www.bithound.io/github/gitzonetools/npmts/master/dependencies/npm)
[![bitHound Code](https://www.bithound.io/github/gitzone/npmts/badges/code.svg)](https://www.bithound.io/github/gitzone/npmts) [![bitHound Code](https://www.bithound.io/github/gitzonetools/npmts/badges/code.svg)](https://www.bithound.io/github/gitzonetools/npmts)
[![TypeScript](https://img.shields.io/badge/TypeScript-2.x-blue.svg)](https://nodejs.org/dist/latest-v6.x/docs/api/) [![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/) [![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/) [![JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/)
## Quick Demo
[![asciicast](https://asciinema.org/a/9c3assmh21i49qhe5lmi48sze.png)](https://asciinema.org/a/9c3assmh21i49qhe5lmi48sze?speed=2&t=0)
## Usage ## Usage
NPMTS is your friend when writing, testing, publishing and documenting npm modules written in TypeScript. NPMTS is your friend when writing, testing, publishing and documenting npm modules written in TypeScript.
npmts will npmts will
1. check your dependencies and package.json (unused, missing, updates, security) 1. check your dependencies and package.json (unused, missing, updates, security)
1. transpile your code with tsc, 1. transpile your code with tsc,
1. test your code with tap (supports the fancy stuff like Promises, Generators, async/await, sourcemaps, parallel test execution in child processes) 1. test your code with tap (supports the fancy stuff like Promises, Generators, async/await, sourcemaps, parallel test execution in child processes)
@ -33,7 +36,9 @@ For more information on how tests are run check out the [tapbuffer module](https
This works on your machine and in CI. There is a prebuild docker image available that includes npmts to make CI a breeze: 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/) [hosttoday/ht-docker-node:npmts on Dockerhub](https://hub.docker.com/r/hosttoday/ht-docker-node/)
For further information read the linked docs at the top of this README.
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh) > MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html) | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html)
[![repo-footer](https://gitzone.gitlab.io/assets/repo-footer.svg)](https://git.zone) [![repo-footer](https://gitzone.gitlab.io/assets/repo-footer.svg)](https://push.rocks)

View File

@ -8,119 +8,119 @@ import * as plugins from './mod00.plugins'
export let projectInfo: ProjectinfoNpm export let projectInfo: ProjectinfoNpm
let checkProjectTypings = (configArg) => { let checkProjectTypings = (configArg) => {
let done = q.defer() let done = q.defer()
plugins.beautylog.ora.text('Check Module: Check Project Typings...') plugins.beautylog.ora.text('Check Module: Check Project Typings...')
projectInfo = new ProjectinfoNpm(paths.cwd) projectInfo = new ProjectinfoNpm(paths.cwd)
if (typeof projectInfo.packageJson.typings === 'undefined') { if (typeof projectInfo.packageJson.typings === 'undefined') {
plugins.beautylog.error(`please add typings field to package.json`) plugins.beautylog.error(`please add typings field to package.json`)
process.exit(1) process.exit(1)
}; };
done.resolve(configArg) done.resolve(configArg)
return done.promise return done.promise
} }
const depcheckOptions = { const depcheckOptions = {
ignoreBinPackage: false, // ignore the packages with bin entry ignoreBinPackage: false, // ignore the packages with bin entry
parsers: { // the target parsers parsers: { // the target parsers
'*.ts': plugins.depcheck.parser.typescript '*.ts': plugins.depcheck.parser.typescript
}, },
detectors: [ // the target detectors detectors: [ // the target detectors
plugins.depcheck.detector.requireCallExpression, plugins.depcheck.detector.requireCallExpression,
plugins.depcheck.detector.importDeclaration plugins.depcheck.detector.importDeclaration
], ],
specials: [ // the target special parsers specials: [ // the target special parsers
plugins.depcheck.special.eslint, plugins.depcheck.special.eslint,
plugins.depcheck.special.webpack plugins.depcheck.special.webpack
] ]
} }
let checkDependencies = (configArg) => { let checkDependencies = (configArg) => {
let done = q.defer() let done = q.defer()
plugins.beautylog.ora.text('Check Module: Check Dependencies...') plugins.beautylog.ora.text('Check Module: Check Dependencies...')
let depcheckOptionsMerged = plugins.lodash.merge(depcheckOptions, { let depcheckOptionsMerged = plugins.lodash.merge(depcheckOptions, {
ignoreDirs: [ // folder with these names will be ignored ignoreDirs: [ // folder with these names will be ignored
'test', 'test',
'dist', 'dist',
'bower_components' 'bower_components'
], ],
ignoreMatches: [ // ignore dependencies that matches these globs ignoreMatches: [ // ignore dependencies that matches these globs
'@types/*', '@types/*',
'babel-preset-*' 'babel-preset-*'
] ]
}) })
plugins.depcheck(paths.cwd, depcheckOptionsMerged, (unused) => { plugins.depcheck(paths.cwd, depcheckOptionsMerged, (unused) => {
for (let item of unused.dependencies) { for (let item of unused.dependencies) {
plugins.beautylog.warn(`Watch out: unused dependency "${item}"`) plugins.beautylog.warn(`Watch out: unused dependency "${item}"`)
} }
for (let item in unused.missing) { for (let item in unused.missing) {
plugins.beautylog.error(`missing dependency "${item}" in package.json`) plugins.beautylog.error(`missing dependency "${item}" in package.json`)
} }
if (unused.missing.length > 0) { if (unused.missing.length > 0) {
plugins.beautylog.info('exiting due to missing dependencies in package.json') plugins.beautylog.info('exiting due to missing dependencies in package.json')
process.exit(1) process.exit(1)
} }
for (let item in unused.invalidFiles) { for (let item in unused.invalidFiles) {
plugins.beautylog.warn(`Watch out: could not parse file ${item}`) plugins.beautylog.warn(`Watch out: could not parse file ${item}`)
}; };
for (let item in unused.invalidDirs) { for (let item in unused.invalidDirs) {
plugins.beautylog.warn(`Watch out: could not parse directory ${item}`) plugins.beautylog.warn(`Watch out: could not parse directory ${item}`)
} }
done.resolve(configArg) done.resolve(configArg)
}) })
return done.promise return done.promise
} }
let checkDevDependencies = (configArg) => { let checkDevDependencies = (configArg) => {
let done = q.defer() let done = q.defer()
plugins.beautylog.ora.text('Check Module: Check devDependencies...') plugins.beautylog.ora.text('Check Module: Check devDependencies...')
let depcheckOptionsMerged = plugins.lodash.merge(depcheckOptions, { let depcheckOptionsMerged = plugins.lodash.merge(depcheckOptions, {
ignoreDirs: [ // folder with these names will be ignored ignoreDirs: [ // folder with these names will be ignored
'ts', 'ts',
'dist', 'dist',
'bower_components' 'bower_components'
], ],
ignoreMatches: [ // ignore dependencies that matches these globs ignoreMatches: [ // ignore dependencies that matches these globs
'@types/*', '@types/*',
'babel-preset-*' 'babel-preset-*'
] ]
}) })
plugins.depcheck(paths.cwd, depcheckOptionsMerged, (unused) => { plugins.depcheck(paths.cwd, depcheckOptionsMerged, (unused) => {
for (let item of unused.devDependencies) { for (let item of unused.devDependencies) {
plugins.beautylog.log(`unused devDependency ${item}`) plugins.beautylog.log(`unused devDependency ${item}`)
} }
for (let item in unused.missing) { for (let item in unused.missing) {
plugins.beautylog.error(`unused devDependency ${item}`) plugins.beautylog.error(`missing devDependency ${item}`)
} }
if (unused.missing.length > 0) { if (unused.missing.length > 0) {
plugins.beautylog.info('exiting due to missing dependencies in package.json') plugins.beautylog.info('exiting due to missing dependencies in package.json')
process.exit(1) process.exit(1)
} }
for (let item in unused.invalidFiles) { for (let item in unused.invalidFiles) {
plugins.beautylog.warn(`Watch out: could not parse file ${item}`) plugins.beautylog.warn(`Watch out: could not parse file ${item}`)
} }
for (let item in unused.invalidDirs) { for (let item in unused.invalidDirs) {
plugins.beautylog.warn(`Watch out: could not parse directory ${item}`) plugins.beautylog.warn(`Watch out: could not parse directory ${item}`)
} }
done.resolve(configArg) done.resolve(configArg)
}) })
return done.promise return done.promise
} }
let checkNodeVersion = (configArg) => { let checkNodeVersion = (configArg) => {
let done = q.defer() let done = q.defer()
plugins.beautylog.ora.text('checking node version') plugins.beautylog.ora.text('checking node version')
done.resolve(configArg) done.resolve(configArg)
return done.promise return done.promise
} }
export let run = (configArg) => { export let run = (configArg) => {
let done = q.defer() let done = q.defer()
plugins.beautylog.ora.text('Check Module: ...') plugins.beautylog.ora.text('Check Module: ...')
checkProjectTypings(configArg) checkProjectTypings(configArg)
.then(checkDependencies) .then(checkDependencies)
.then(checkDevDependencies) .then(checkDevDependencies)
.then(checkNodeVersion) .then(checkNodeVersion)
.then(done.resolve) .then(done.resolve)
.catch((err) => { console.log(err) }) .catch((err) => { console.log(err) })
return done.promise return done.promise
} }

View File

@ -24,7 +24,7 @@ let tap = function (configArg: INpmtsConfig) {
* handle the testable files * handle the testable files
*/ */
let testableFilesSmartstream = new plugins.smartstream.Smartstream([ let testableFilesSmartstream = new plugins.smartstream.Smartstream([
plugins.gulp.src([ plugins.path.join(paths.cwd, './ts/**/*.ts') ]), plugins.smartgulp.src([ plugins.path.join(paths.cwd, './ts/**/*.ts') ]),
plugins.gulpSourcemaps.init(), plugins.gulpSourcemaps.init(),
plugins.gulpTypeScript({ plugins.gulpTypeScript({
target: 'ES5', target: 'ES5',
@ -32,10 +32,10 @@ let tap = function (configArg: INpmtsConfig) {
experimentalDecorators: true, experimentalDecorators: true,
lib: [ 'DOM', 'ES5', 'ES2015.Promise', 'ES2015.Generator', 'ES2015.Iterable' ] lib: [ 'DOM', 'ES5', 'ES2015.Promise', 'ES2015.Generator', 'ES2015.Iterable' ]
}), }),
plugins.gulpSourcemaps.write(),
plugins.gulpFunction.forEach(async file => { plugins.gulpFunction.forEach(async file => {
file.path = file.path.replace(paths.tsDir, paths.distDir) file.path = file.path.replace(paths.tsDir, paths.distDir)
}), }),
plugins.gulpSourcemaps.write(),
npmtsTapBuffer.pipeTestableFiles(), npmtsTapBuffer.pipeTestableFiles(),
plugins.smartstream.cleanPipe() plugins.smartstream.cleanPipe()
]) ])
@ -44,13 +44,15 @@ let tap = function (configArg: INpmtsConfig) {
* handle the test files * handle the test files
*/ */
let testFilesSmartstream = new plugins.smartstream.Smartstream([ let testFilesSmartstream = new plugins.smartstream.Smartstream([
plugins.gulp.src([ plugins.path.join(paths.cwd, 'test/*.ts') ]), plugins.smartgulp.src([ plugins.path.join(paths.cwd, 'test/*.ts') ]),
plugins.gulpSourcemaps.init(),
plugins.gulpTypeScript({ plugins.gulpTypeScript({
target: 'ES5', target: 'ES5',
emitDecoratorMetadata: true, emitDecoratorMetadata: true,
experimentalDecorators: true, experimentalDecorators: true,
lib: [ 'DOM', 'ES5', 'ES2015.Promise', 'ES2015.Generator', 'ES2015.Iterable' ] lib: [ 'DOM', 'ES5', 'ES2015.Promise', 'ES2015.Generator', 'ES2015.Iterable' ]
}), }),
plugins.gulpSourcemaps.write(),
npmtsTapBuffer.pipeTestFiles(), npmtsTapBuffer.pipeTestFiles(),
plugins.smartstream.cleanPipe() plugins.smartstream.cleanPipe()
]) ])
@ -77,10 +79,16 @@ let tap = function (configArg: INpmtsConfig) {
} }
let handleCoverageData = async (configArg: INpmtsConfig) => { let handleCoverageData = async (configArg: INpmtsConfig) => {
let coverageResult = await plugins.smartcov.get.percentageFromLcovString( let coverageResult: number = 0 // the coverage in percent
configArg.runData.coverageLcovInfo, if (configArg.runData.coverageLcovInfo) {
2 coverageResult = await plugins.smartcov.get.percentageFromLcovString(
) configArg.runData.coverageLcovInfo,
2
)
} else {
plugins.beautylog.warn('Hey... Did your tests import and use your module that you are trying to test?')
}
if (coverageResult >= configArg.coverageTreshold) { if (coverageResult >= configArg.coverageTreshold) {
plugins.beautylog.ok( plugins.beautylog.ok(
`${(coverageResult).toString()}% ` `${(coverageResult).toString()}% `

View File

@ -1,17 +1,17 @@
export * from '../npmts.plugins' export * from '../npmts.plugins'
import * as gulp from 'gulp'
import * as gulpFunction from 'gulp-function' import * as gulpFunction from 'gulp-function'
import * as gulpSourcemaps from 'gulp-sourcemaps' import * as gulpSourcemaps from 'gulp-sourcemaps'
import * as gulpTypeScript from 'gulp-typescript' import * as gulpTypeScript from 'gulp-typescript'
import * as smartcov from 'smartcov' import * as smartcov from 'smartcov'
import * as smartgulp from 'smartgulp'
import * as tapbuffer from 'tapbuffer' import * as tapbuffer from 'tapbuffer'
export { export {
gulp,
gulpFunction, gulpFunction,
gulpSourcemaps, gulpSourcemaps,
gulpTypeScript, gulpTypeScript,
smartcov, smartcov,
smartgulp,
tapbuffer tapbuffer
} }

View File

@ -8,7 +8,6 @@ import * as projectinfo from 'projectinfo'
import * as path from 'path' import * as path from 'path'
import * as smartanalytics from 'smartanalytics' import * as smartanalytics from 'smartanalytics'
import * as smartcli from 'smartcli' import * as smartcli from 'smartcli'
import * as smartenv from 'smartenv'
import * as smartfile from 'smartfile' import * as smartfile from 'smartfile'
import * as smartpath from 'smartpath' import * as smartpath from 'smartpath'
import * as smartstream from 'smartstream' import * as smartstream from 'smartstream'
@ -26,7 +25,6 @@ export {
path, path,
smartanalytics, smartanalytics,
smartcli, smartcli,
smartenv,
smartfile, smartfile,
smartpath, smartpath,
smartstream, smartstream,

1401
yarn.lock

File diff suppressed because it is too large Load Diff