Compare commits

...

18 Commits

Author SHA1 Message Date
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
14 changed files with 144 additions and 137 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. 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-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 ### Install
First install npmts globally, then install the npmts-g locally. 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. Clean up from any previous builds (old js files)
1. Install typings 1. Install typings
1. Transpile TypeScript with **inline sourcemaps** and **declaration files** 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. Instrumentalize created JavaScript files with istanbul
1. Run Tests 1. Run Tests
1. Create Coverage report 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. thanks to autogenerated source maps.
## Example Usage in modules: ## Example Usage in modules:
* [gulp-typings](https://www.npmjs.com/package/gulp-typings)
* [gulp-browser](https://www.npmjs.com/package/gulp-typings) * [gulp-browser](https://www.npmjs.com/package/gulp-typings)
> We will add more options over time. > We will add more options over time.
@ -112,7 +111,7 @@ thanks to autogenerated source maps.
## Tips and tricks: ## 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 [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 * Use [hosttoday/ht-docker-node:npmts](https://hub.docker.com/r/hosttoday/ht-docker-node/) for speedy CI builds
## About the authors: ## About the authors:

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,12 +2,14 @@ import "typings-global";
export import beautylog = require("beautylog"); export import beautylog = require("beautylog");
export declare let gulp: any; export declare let gulp: any;
export declare let g: { export declare let g: {
babel: any;
babelIstanbul: any;
gFunction: any; gFunction: any;
istanbul: any; injectModules: any;
jsdoc3: any;
mocha: any; mocha: any;
replace: any; replace: any;
sourcemaps: any; sourcemaps: any;
typedoc: any;
}; };
export declare let lodashObject: any; export declare let lodashObject: any;
export declare let merge2: any; export declare let merge2: any;

View File

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

View File

@ -6,7 +6,7 @@ var NpmtsAssets = require("./npmts.assets");
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 NpmtsConfigFile = require("./npmts.configfile");
var NpmtsJsdoc = require("./npmts.jsdoc"); 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) {
@ -17,7 +17,7 @@ exports.promisechain = function (argvArg) {
.then(NpmtsClean.run) .then(NpmtsClean.run)
.then(NpmtsCompile.run) .then(NpmtsCompile.run)
.then(NpmtsAssets.run) .then(NpmtsAssets.run)
.then(NpmtsJsdoc.run) .then(NpmtsTypeDoc.run)
.then(NpmtsTests.run) .then(NpmtsTests.run)
.then(function (configArg) { .then(function (configArg) {
var shipString = "" + var shipString = "" +

43
dist/npmts.tests.js vendored
View File

@ -7,34 +7,26 @@ 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.babelIstanbul())
.pipe(plugins.g.babelIstanbul.hookRequire())
.pipe(plugins.g.sourcemaps.write()) .pipe(plugins.g.sourcemaps.write())
.pipe(plugins.g.istanbul.hookRequire()) // Force `require` to return covered files .on("finish", function () {
.pipe(plugins.g.gFunction(function () { plugins.gulp.src([plugins.path.join(paths.cwd, "test/test.js")])
plugins.beautylog.ok("JS has been instrumentalized to get test code coverage!"); .pipe(plugins.g.babel())
done.resolve(configArg); .pipe(plugins.g.injectModules())
}, "atEnd")); .pipe(plugins.g.mocha())
return done.promise; .pipe(plugins.g.babelIstanbul.writeReports())
}; .pipe(plugins.g.gFunction(function () {
/** plugins.beautylog.ok("Tested!");
* done.resolve(configArg);
* @returns {*} }, "atEnd"));
*/ });
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"));
return done.promise; return done.promise;
}; };
var coverage = function (configArg) { var coverage = function (configArg) {
@ -63,8 +55,7 @@ exports.run = function (configArg) {
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);

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

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,12 +2,14 @@ import "typings-global";
export import beautylog = require("beautylog"); export import beautylog = require("beautylog");
export let gulp = require("gulp"); export let gulp = require("gulp");
export let g = { export let g = {
babel: require("gulp-babel"),
babelIstanbul: require("gulp-babel-istanbul"),
gFunction: require("gulp-function"), gFunction: require("gulp-function"),
istanbul: require("gulp-istanbul"), injectModules: require("gulp-inject-modules"),
jsdoc3: require("gulp-jsdoc3"),
mocha: require("gulp-mocha"), mocha: require("gulp-mocha"),
replace: require("gulp-replace"), 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 lodashObject = require('lodash/fp/object');
export let merge2 = require("merge2"); export let merge2 = require("merge2");

View File

@ -8,7 +8,7 @@ import NpmtsAssets = require("./npmts.assets");
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 NpmtsConfigFile = require("./npmts.configfile");
import NpmtsJsdoc = require("./npmts.jsdoc"); 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");
@ -20,7 +20,7 @@ export let promisechain = function(argvArg){
.then(NpmtsClean.run) .then(NpmtsClean.run)
.then(NpmtsCompile.run) .then(NpmtsCompile.run)
.then(NpmtsAssets.run) .then(NpmtsAssets.run)
.then(NpmtsJsdoc.run) .then(NpmtsTypeDoc.run)
.then(NpmtsTests.run) .then(NpmtsTests.run)
.then(function(configArg){ .then(function(configArg){
let shipString = "" + let shipString = "" +

View File

@ -7,35 +7,26 @@ 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.babelIstanbul())
.pipe(plugins.g.babelIstanbul.hookRequire())
.pipe(plugins.g.sourcemaps.write()) .pipe(plugins.g.sourcemaps.write())
.pipe(plugins.g.istanbul.hookRequire()) // Force `require` to return covered files .on("finish",function(){
.pipe(plugins.g.gFunction(function(){ plugins.gulp.src([plugins.path.join(paths.cwd,"test/test.js")])
plugins.beautylog.ok("JS has been instrumentalized to get test code coverage!"); .pipe(plugins.g.babel())
done.resolve(configArg); .pipe(plugins.g.injectModules())
},"atEnd")); .pipe(plugins.g.mocha())
return done.promise; .pipe(plugins.g.babelIstanbul.writeReports())
}; .pipe(plugins.g.gFunction(function(){
plugins.beautylog.ok("Tested!");
/** done.resolve(configArg);
* },"atEnd"));
* @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"));
return done.promise; return done.promise;
}; };
@ -72,8 +63,7 @@ export let run = function(configArg) {
"--------------------------------------------------------------" "--------------------------------------------------------------"
); );
istanbul(config) mocha(config)
.then(mocha)
.then(coverage) .then(coverage)
.then(() => { .then(() => {
done.resolve(config); 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;
};