Compare commits

...

28 Commits

Author SHA1 Message Date
c947121243 5.3.20 2016-07-16 20:54:57 +02:00
4b3f0649fa now much faster due to skipping html coverage report 2016-07-16 20:54:52 +02:00
523c62530f 5.3.19 2016-07-16 20:14:47 +02:00
aa57617fc7 another fix 2016-07-16 20:14:43 +02:00
ef89a33dfc 5.3.18 2016-07-16 19:23:37 +02:00
474a730a09 another fix 2016-07-16 19:23:34 +02:00
e3b029c240 5.3.17 2016-07-16 19:08:23 +02:00
290824190d fix dependency 2016-07-16 19:08:20 +02:00
923d78caab 5.3.16 2016-07-16 19:05:17 +02:00
6587b74a23 now using better babel config 2016-07-16 19:05:12 +02:00
aa0a35f258 5.3.15 2016-07-15 19:27:56 +02:00
09b8809ede fix test 2016-07-15 19:27:53 +02:00
e25566490b 5.3.14 2016-07-15 18:18:14 +02:00
3ed7473066 fix istanbul 2016-07-15 18:18:11 +02:00
1202a68b01 5.3.13 2016-07-15 12:22:29 +02:00
c67d43e16d prevent typedoc from causing build fail 2016-07-15 12:22:19 +02:00
df74769533 5.3.12 2016-07-15 11:52:00 +02:00
5aef714497 now fully ES6 2016-07-15 11:51:55 +02:00
24701afcb2 now using typedoc 2016-07-15 00:38:41 +02:00
cbfbd4ee67 restructure 2016-07-14 13:21:07 +02:00
6df449394d 5.3.11 2016-07-14 13:08:48 +02:00
27b6119bbb improve README 2016-07-14 13:08:43 +02:00
b22abef889 5.3.10 2016-07-14 13:04:11 +02:00
4d8a7a4202 Merge branch 'master' of gitlab.com:pushrocks/npmts 2016-07-14 13:03:54 +02:00
72bc08e973 5.3.9 2016-07-14 13:03:09 +02:00
430f636ae4 now using EsDoc, closes #2 2016-07-14 13:02:58 +02:00
bbc8f13ecf update docker link in README 2016-07-11 15:50:39 +02:00
a01f07f62c improve README 2016-07-11 14:46:31 +02:00
19 changed files with 170 additions and 146 deletions

View File

@ -13,7 +13,7 @@ NPMTS is your friend when it comes to write, test, publish and document NPM modu
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-npmg on Dockerhub](https://hub.docker.com/r/hosttoday/ht-docker-npmg/)
[hosttoday/ht-docker-node:npmts on Dockerhub](https://hub.docker.com/r/hosttoday/ht-docker-node/)
### Install
First install npmts globally, then install the npmts-g locally.
@ -40,7 +40,7 @@ Then add it to your package.json's script section to trigger a build:
1. Clean up from any previous builds (old js files)
1. Install typings
1. Transpile TypeScript with **inline sourcemaps** and **declaration files**
1. Create JsDoc Documentation
1. Create EsDoc Documentation
1. Instrumentalize created JavaScript files with istanbul
1. Run Tests
1. Create Coverage report
@ -104,7 +104,6 @@ Any errors will be shown with reference to their originating source in TypeScrip
thanks to autogenerated source maps.
## Example Usage in modules:
* [gulp-typings](https://www.npmjs.com/package/gulp-typings)
* [gulp-browser](https://www.npmjs.com/package/gulp-typings)
> We will add more options over time.
@ -112,7 +111,7 @@ thanks to autogenerated source maps.
## 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 JsDocs for the module
* 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:

1
dist/npmts.cli.d.ts vendored
View File

@ -1 +0,0 @@
import "typings-global";

2
dist/npmts.cli.js vendored
View File

@ -1,2 +0,0 @@
"use strict";
require("typings-global");

View File

@ -9,7 +9,7 @@ var compileTs = function (tsFileArrayArg, tsOptionsArg) {
var done = plugins.Q.defer();
var tsOptionsDefault = {
declaration: true,
target: "ES5",
target: "ES6",
module: "commonjs"
};
/**

28
dist/npmts.jsdoc.js vendored
View File

@ -1,28 +0,0 @@
"use strict";
require("typings-global");
var plugins = require("./npmts.plugins");
var paths = require("./npmts.paths");
var npmts_promisechain_1 = require("./npmts.promisechain");
var genJsdoc = function (configArg) {
var done = plugins.Q.defer();
npmts_promisechain_1.npmtsOra.text("now generating " + "JsDoc documentation".yellow);
plugins.gulp.src([
plugins.path.join(paths.cwd, "README.md"),
plugins.path.join(paths.distDir, "**/*.js")
])
.pipe(plugins.g.jsdoc3({
opts: {
destination: paths.docsDir
}
}, function () {
plugins.beautylog.ok("JsDoc documentation has been generated!");
done.resolve(configArg);
}));
return done.promise;
};
exports.run = function (configArg) {
var done = plugins.Q.defer();
genJsdoc(configArg)
.then(done.resolve);
return done.promise;
};

View File

@ -2,15 +2,16 @@ import "typings-global";
export import beautylog = require("beautylog");
export declare let gulp: any;
export declare let g: {
gFunction: any;
babel: any;
istanbul: any;
jsdoc3: any;
gFunction: any;
injectModules: any;
mocha: any;
replace: any;
sourcemaps: any;
typedoc: any;
};
export declare let lodashObject: any;
export declare let merge2: any;
export import projectinfo = require("projectinfo");
export import path = require("path");
export import Q = require("q");

View File

@ -3,15 +3,16 @@ require("typings-global");
exports.beautylog = require("beautylog");
exports.gulp = require("gulp");
exports.g = {
gFunction: require("gulp-function"),
babel: require("gulp-babel"),
istanbul: require("gulp-istanbul"),
jsdoc3: require("gulp-jsdoc3"),
gFunction: require("gulp-function"),
injectModules: require("gulp-inject-modules"),
mocha: require("gulp-mocha"),
replace: require("gulp-replace"),
sourcemaps: require("gulp-sourcemaps")
sourcemaps: require("gulp-sourcemaps"),
typedoc: require("gulp-typedoc")
};
exports.lodashObject = require('lodash/fp/object');
exports.merge2 = require("merge2");
exports.projectinfo = require("projectinfo");
exports.path = require("path");
exports.Q = require("q");

View File

@ -6,7 +6,7 @@ var NpmtsAssets = require("./npmts.assets");
var NpmtsClean = require("./npmts.clean");
var NpmtsCompile = require("./npmts.compile");
var NpmtsConfigFile = require("./npmts.configfile");
var NpmtsJsdoc = require("./npmts.jsdoc");
var NpmtsTypeDoc = require("./npmts.typedoc");
var NpmtsOptions = require("./npmts.options");
var NpmtsTests = require("./npmts.tests");
exports.promisechain = function (argvArg) {
@ -17,7 +17,7 @@ exports.promisechain = function (argvArg) {
.then(NpmtsClean.run)
.then(NpmtsCompile.run)
.then(NpmtsAssets.run)
.then(NpmtsJsdoc.run)
.then(NpmtsTypeDoc.run)
.then(NpmtsTests.run)
.then(function (configArg) {
var shipString = "" +

55
dist/npmts.tests.js vendored
View File

@ -7,34 +7,38 @@ var npmts_promisechain_1 = require("./npmts.promisechain");
*
* @returns {*}
*/
var istanbul = function (configArg) {
npmts_promisechain_1.npmtsOra.text("Instrumentalizing transpiled JS...");
var mocha = function (configArg) {
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 stream = plugins.gulp.src([plugins.path.join(paths.cwd, "dist/*.js")])
.pipe(plugins.g.sourcemaps.init())
.pipe(plugins.g.istanbul()) // Covering files
.pipe(plugins.g.babel({
presets: [
plugins.path.join(paths.npmtsPackageRoot, "node_modules/babel-preset-es2015/index.js")
]
}))
.pipe(plugins.g.istanbul({}))
.pipe(plugins.g.sourcemaps.write())
.pipe(plugins.g.istanbul.hookRequire()) // Force `require` to return covered files
.pipe(plugins.g.gFunction(function () {
plugins.beautylog.ok("JS has been instrumentalized to get test code coverage!");
done.resolve(configArg);
}, "atEnd"));
return done.promise;
};
/**
*
* @returns {*}
*/
var mocha = function (configArg) {
var done = plugins.Q.defer();
npmts_promisechain_1.npmtsOra.end(); // end npmtsOra for tests.
var stream = plugins.gulp.src(["./test/test.js"])
.pipe(plugins.g.mocha())
.pipe(plugins.g.istanbul.writeReports()) // Creating the reports after tests ran
.pipe(plugins.g.gFunction(function () {
plugins.beautylog.ok("Tests have passed!");
done.resolve(configArg);
}, "atEnd"));
.pipe(plugins.g.injectModules())
.on("finish", function () {
plugins.gulp.src([plugins.path.join(paths.cwd, "test/test.js")])
.pipe(plugins.g.babel({
presets: [
plugins.path.join(paths.npmtsPackageRoot, "node_modules/babel-preset-es2015/index.js")
]
}))
.pipe(plugins.g.injectModules())
.pipe(plugins.g.mocha())
.pipe(plugins.g.istanbul.writeReports({
dir: './coverage',
reporters: ['lcovonly', 'json', 'text', 'text-summary']
}))
.pipe(plugins.g.gFunction(function () {
plugins.beautylog.ok("Tested!");
done.resolve(configArg);
}, "atEnd"));
});
return done.promise;
};
var coverage = function (configArg) {
@ -63,8 +67,7 @@ exports.run = function (configArg) {
plugins.beautylog.log("-------------------------------------------------------\n" +
"*************************** TESTS: ***************************\n" +
"--------------------------------------------------------------");
istanbul(config)
.then(mocha)
mocha(config)
.then(coverage)
.then(function () {
done.resolve(config);

35
dist/npmts.typedoc.js vendored Normal file
View File

@ -0,0 +1,35 @@
"use strict";
require("typings-global");
var plugins = require("./npmts.plugins");
var paths = require("./npmts.paths");
var npmts_promisechain_1 = require("./npmts.promisechain");
var genTypeDoc = function (configArg) {
var done = plugins.Q.defer();
npmts_promisechain_1.npmtsOra.text("now generating " + "TypeDoc documentation".yellow);
plugins.beautylog.log("TypeDoc Output:");
plugins.gulp.src(plugins.path.join(paths.tsDir, "**/*.ts"))
.pipe(plugins.g.typedoc({
// TypeScript options (see typescript docs)
module: "commonjs",
target: "es6",
includeDeclarations: true,
// Output options (see typedoc docs)
out: paths.docsDir,
json: plugins.path.join(paths.docsDir, "file.json"),
// TypeDoc options (see typedoc docs)
name: "my-project",
//theme: "default",
ignoreCompilerErrors: true,
version: true,
}))
.pipe(plugins.g.gFunction(done.resolve, "atEnd"));
return done.promise;
};
exports.run = function (configArg) {
var done = plugins.Q.defer();
genTypeDoc(configArg)
.then(function () {
done.resolve(configArg);
});
return done.promise;
};

View File

@ -1,6 +1,6 @@
{
"name": "npmts",
"version": "5.3.9",
"version": "5.3.20",
"description": "write npm modules with TypeScript",
"main": "dist/index.js",
"bin": {
@ -29,22 +29,24 @@
},
"homepage": "https://gitlab.com/pushrocks/npmts#readme",
"dependencies": {
"@types/minimatch": "^2.0.22-alpha",
"@types/q": "0.0.21-alpha",
"@types/shelljs": "^0.3.21-alpha",
"beautylog": "5.0.12",
"@types/minimatch": "*",
"@types/q": "*",
"@types/shelljs": "*",
"babel-preset-es2015": "^6.9.0",
"beautylog": "5.0.14",
"early": "^2.0.13",
"gulp": "3.9.1",
"gulp-babel": "^6.1.2",
"gulp-concat": "^2.6.0",
"gulp-function": "^1.3.6",
"gulp-if": "^2.0.1",
"gulp-inject-modules": "^1.0.0",
"gulp-istanbul": "^1.0.0",
"gulp-jsdoc3": "^0.3.0",
"gulp-mocha": "^2.2.0",
"gulp-replace": "^0.5.4",
"gulp-sourcemaps": "^1.6.0",
"gulp-typedoc": "^2.0.0",
"lodash": "^4.13.1",
"merge2": "1.0.2",
"projectinfo": "1.0.3",
"q": "^1.4.1",
"shelljs": "^0.7.0",
@ -54,9 +56,10 @@
"smartenv": "1.2.5",
"smartfile": "4.0.10",
"smartpath": "3.2.2",
"smartstring": "^2.0.10",
"source-map-support": "^0.4.1",
"tsn": "^1.0.5",
"smartstring": "^2.0.14",
"source-map-support": "^0.4.2",
"tsn": "^1.0.7",
"typedoc": "^0.4.4",
"typescript": "^2.0.0-dev.20160630",
"typings-global": "*"
},

View File

@ -1 +0,0 @@
import "typings-global";

View File

@ -10,7 +10,7 @@ let compileTs = (tsFileArrayArg:string[],tsOptionsArg = {}) => {
let tsOptionsDefault = {
declaration: true,
target: "ES5",
target: "ES6",
module: "commonjs"
};

View File

@ -1,30 +0,0 @@
import "typings-global";
import plugins = require("./npmts.plugins");
import paths = require("./npmts.paths");
import {npmtsOra} from "./npmts.promisechain";
let genJsdoc = function(configArg){
let done = plugins.Q.defer();
npmtsOra.text("now generating " + "JsDoc documentation".yellow);
plugins.gulp.src([
plugins.path.join(paths.cwd,"README.md"),
plugins.path.join(paths.distDir,"**/*.js")
])
.pipe(plugins.g.jsdoc3({
opts: {
destination: paths.docsDir
}
}, function(){
plugins.beautylog.ok("JsDoc documentation has been generated!");
done.resolve(configArg)
}));
return done.promise;
};
export let run = function(configArg){
let done = plugins.Q.defer();
genJsdoc(configArg)
.then(done.resolve);
return done.promise;
};

View File

@ -2,15 +2,16 @@ import "typings-global";
export import beautylog = require("beautylog");
export let gulp = require("gulp");
export let g = {
gFunction: require("gulp-function"),
babel: require("gulp-babel"),
istanbul: require("gulp-istanbul"),
jsdoc3: require("gulp-jsdoc3"),
gFunction: require("gulp-function"),
injectModules: require("gulp-inject-modules"),
mocha: require("gulp-mocha"),
replace: require("gulp-replace"),
sourcemaps: require("gulp-sourcemaps")
sourcemaps: require("gulp-sourcemaps"),
typedoc: require("gulp-typedoc")
};
export let lodashObject = require('lodash/fp/object');
export let merge2 = require("merge2");
export import projectinfo = require("projectinfo");
export import path = require("path");
export import Q = require("q");

View File

@ -8,7 +8,7 @@ import NpmtsAssets = require("./npmts.assets");
import NpmtsClean = require("./npmts.clean");
import NpmtsCompile = require("./npmts.compile");
import NpmtsConfigFile = require("./npmts.configfile");
import NpmtsJsdoc = require("./npmts.jsdoc");
import NpmtsTypeDoc = require("./npmts.typedoc");
import NpmtsOptions = require("./npmts.options");
import NpmtsTests = require("./npmts.tests");
@ -20,7 +20,7 @@ export let promisechain = function(argvArg){
.then(NpmtsClean.run)
.then(NpmtsCompile.run)
.then(NpmtsAssets.run)
.then(NpmtsJsdoc.run)
.then(NpmtsTypeDoc.run)
.then(NpmtsTests.run)
.then(function(configArg){
let shipString = "" +

View File

@ -7,35 +7,39 @@ import {npmtsOra} from "./npmts.promisechain";
*
* @returns {*}
*/
let istanbul = function (configArg) {
npmtsOra.text("Instrumentalizing transpiled JS...");
let mocha = function (configArg) {
npmtsOra.text("Instrumentalizing and testing transpiled JS");
npmtsOra.end(); // end npmtsOra for tests.
let done = plugins.Q.defer();
var stream = plugins.gulp.src([plugins.path.join(paths.cwd,"dist/*.js")])
.pipe(plugins.g.sourcemaps.init())
.pipe(plugins.g.istanbul()) // Covering files
.pipe(plugins.g.babel({
presets: [
plugins.path.join(paths.npmtsPackageRoot,"node_modules/babel-preset-es2015/index.js")
]
}))
.pipe(plugins.g.istanbul({
}))
.pipe(plugins.g.sourcemaps.write())
.pipe(plugins.g.istanbul.hookRequire()) // Force `require` to return covered files
.pipe(plugins.g.gFunction(function(){
plugins.beautylog.ok("JS has been instrumentalized to get test code coverage!");
done.resolve(configArg);
},"atEnd"));
return done.promise;
};
/**
*
* @returns {*}
*/
let mocha = function (configArg) {
let done = plugins.Q.defer();
npmtsOra.end(); // end npmtsOra for tests.
let stream = plugins.gulp.src(["./test/test.js"])
.pipe(plugins.g.mocha())
.pipe(plugins.g.istanbul.writeReports()) // Creating the reports after tests ran
.pipe(plugins.g.gFunction(function(){
plugins.beautylog.ok("Tests have passed!");
done.resolve(configArg);
},"atEnd"));
.pipe(plugins.g.injectModules())
.on("finish",function(){
plugins.gulp.src([plugins.path.join(paths.cwd,"test/test.js")])
.pipe(plugins.g.babel({
presets: [
plugins.path.join(paths.npmtsPackageRoot,"node_modules/babel-preset-es2015/index.js")
]
}))
.pipe(plugins.g.injectModules())
.pipe(plugins.g.mocha())
.pipe(plugins.g.istanbul.writeReports({
dir: './coverage',
reporters: [ 'lcovonly', 'json', 'text', 'text-summary']
}))
.pipe(plugins.g.gFunction(function(){
plugins.beautylog.ok("Tested!");
done.resolve(configArg);
},"atEnd"));
});
return done.promise;
};
@ -72,8 +76,7 @@ export let run = function(configArg) {
"--------------------------------------------------------------"
);
istanbul(config)
.then(mocha)
mocha(config)
.then(coverage)
.then(() => {
done.resolve(config);

40
ts/npmts.typedoc.ts Normal file
View File

@ -0,0 +1,40 @@
import "typings-global";
import plugins = require("./npmts.plugins");
import paths = require("./npmts.paths");
import {npmtsOra} from "./npmts.promisechain";
let genTypeDoc = function(configArg){
let done = plugins.Q.defer();
npmtsOra.text("now generating " + "TypeDoc documentation".yellow);
plugins.beautylog.log("TypeDoc Output:");
plugins.gulp.src(plugins.path.join(paths.tsDir,"**/*.ts"))
.pipe(plugins.g.typedoc({
// TypeScript options (see typescript docs)
module: "commonjs",
target: "es6",
includeDeclarations: true,
// Output options (see typedoc docs)
out: paths.docsDir,
json: plugins.path.join(paths.docsDir,"file.json"),
// TypeDoc options (see typedoc docs)
name: "my-project",
//theme: "default",
ignoreCompilerErrors: true,
version: true,
}))
.pipe(plugins.g.gFunction(done.resolve,"atEnd"));
return done.promise;
};
export let run = function(configArg){
let done = plugins.Q.defer();
genTypeDoc(configArg)
.then(() => {
done.resolve(configArg);
});
return done.promise;
};