Compare commits

...

17 Commits

Author SHA1 Message Date
2ab35db571 5.4.13 2016-08-30 17:57:55 +02:00
4a17953298 fix project cleaning 2016-08-30 17:57:51 +02:00
8c633b3c30 fix README 2016-08-30 16:43:28 +02:00
e100a6e026 5.4.12 2016-08-30 16:39:10 +02:00
3e7148c938 update README 2016-08-30 16:39:05 +02:00
3554e2543d add compatibility for npmpage 2016-08-30 16:35:46 +02:00
44a86542ec 5.4.11 2016-08-20 09:19:06 +02:00
b63d2edd29 5.4.10 2016-08-20 09:17:40 +02:00
a4e0112767 update early 2016-08-20 09:17:33 +02:00
b40837b6a7 5.4.9 2016-08-20 05:08:33 +02:00
7ecb565de9 update README 2016-08-20 05:03:32 +02:00
41a38aeb56 5.4.8 2016-08-19 11:16:26 +02:00
0be87e2f45 fix options 2016-08-19 11:16:13 +02:00
2edcb3947e update options 2016-08-19 09:46:36 +02:00
51753df662 5.4.7 2016-08-13 23:54:27 +02:00
36c002581a 5.4.6 2016-08-13 23:54:21 +02:00
db1cfe4746 add --nodocs option 2016-08-13 23:54:17 +02:00
19 changed files with 228 additions and 189 deletions

View File

@ -3,9 +3,11 @@ Write npm modules with TypeScript without hassle. TypeScript ready. Fully ES6.
## Status
[![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/)
## What is NPMTS?
@ -46,10 +48,25 @@ Then add it to your package.json's script section to trigger a build:
### 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",
"mode":"default"
}
}
```
**Custom settings**
```json
{
"mode":"custom",
"docs":false,
"test":true,
"npmts":{
"ts":{
"./customdir/*.ts":"./"
},
@ -64,7 +81,9 @@ the npmts section in npmextra.json can be used to configure npmts.
| key | default value | description |
| --- | --- | --- |
| `"mode"` | `"default"` | "default" will do some default stuff, "custom" only does what you specify |
| `"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. |
@ -88,6 +107,11 @@ 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: You can use `./docs/` directory to create a gitbook.
Use [npmpage](https://www.npmjs.com/package/npmpage) from npm to fuse gitbook and TypeDoc into a website.
## 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.

16
dist/npmts.clean.js vendored
View File

@ -4,24 +4,18 @@ var plugins = require("./npmts.plugins");
var paths = require("./npmts.paths");
var npmts_promisechain_1 = require("./npmts.promisechain");
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);
};
var removeTypings = function () {
var done = plugins.Q.defer();
npmts_promisechain_1.npmtsOra.text("cleaning " + "typings".yellow + " folder");
if (false) {
}
else {
done.resolve();
}
return done.promise;
var removePages = function () {
npmts_promisechain_1.npmtsOra.text("cleaning pages folder");
return plugins.smartfile.fs.remove(paths.pagesDir);
};
exports.run = function (configArg) {
npmts_promisechain_1.npmtsOra.text("cleaning up from previous builds...");
var done = plugins.Q.defer();
removeDist()
.then(removeTypings)
.then(removePages)
.then(function () {
plugins.beautylog.ok("Cleaned up from previous builds!");
done.resolve(configArg);

View File

@ -1,4 +0,0 @@
/// <reference types="q" />
import "typings-global";
import plugins = require("./npmts.plugins");
export declare var run: (argvArg: any) => plugins.Q.Promise<{}>;

View File

@ -1,35 +0,0 @@
"use strict";
require("typings-global");
var plugins = require("./npmts.plugins");
var paths = require("./npmts.paths");
var npmts_promisechain_1 = require("./npmts.promisechain");
exports.run = function (argvArg) {
var done = plugins.Q.defer();
npmts_promisechain_1.npmtsOra.text("looking for npmextra.json");
var defaultConfig = {
mode: "default",
notest: false
};
if (argvArg.notest) {
defaultConfig.notest = true;
}
;
var config = plugins.npmextra.dataFor({
toolName: "npmts",
defaultSettings: defaultConfig,
cwd: paths.cwd
});
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);
}
;
done.resolve(config);
return done.promise;
};

View File

@ -1,4 +1,15 @@
/// <reference types="q" />
import "typings-global";
import plugins = require("./npmts.plugins");
export declare var run: (configArg: any) => plugins.Q.Promise<{}>;
export declare type npmtsMode = "default" | "custom";
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<{}>;

56
dist/npmts.options.js vendored
View File

@ -1,16 +1,44 @@
"use strict";
require("typings-global");
var plugins = require("./npmts.plugins");
var paths = require("./npmts.paths");
var npmts_promisechain_1 = require("./npmts.promisechain");
exports.run = function (configArg) {
;
exports.run = function (argvArg) {
var done = plugins.Q.defer();
var config = configArg;
npmts_promisechain_1.npmtsOra.text("now determining build options...");
var defaultConfig = {
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
if (config.mode == "default") {
config.typings = [
"./ts/typings.json"
];
config.ts = (_a = {},
_a["./ts/**/*.ts"] = "./dist/",
_a
@ -19,13 +47,17 @@ exports.run = function (configArg) {
_b["./test/test.ts"] = "./test/",
_b
);
config.test = ["./index.js"];
}
//check if config.tsOptions is available
config.tsOptions ? void (0) : config.tsOptions = {};
config.coverageTreshold ? void (0) : config.coverageTreshold = 70;
// handle docs
config.docs ? void (0) : config.docs = {};
;
// mix with commandline
if (config.argv.notest) {
config.test = false;
}
;
if (config.argv.nodocs) {
config.docs = false;
}
;
plugins.beautylog.ok("build options are ready!");
done.resolve(config);
return done.promise;

View File

@ -3,10 +3,11 @@ export declare let npmtsPackageRoot: string;
export declare let cwd: string;
export declare let tsDir: string;
export declare let distDir: string;
export declare let docsDir: string;
export declare let testDir: string;
export declare let typingsDir: string;
export declare let coverageDir: string;
export declare let pagesDir: string;
export declare let pagesApiDir: string;
export declare let npmtsAssetsDir: string;
export declare let indexTS: string;
export declare let testTS: string;

10
dist/npmts.paths.js vendored
View File

@ -1,17 +1,19 @@
"use strict";
require("typings-global");
var plugins = require("./npmts.plugins");
//Npmts Paths
// NPMTS Paths
exports.npmtsPackageRoot = plugins.path.join(__dirname, "../");
//Project paths
// Project paths
exports.cwd = process.cwd();
//Directories
// Directories
exports.tsDir = plugins.path.join(exports.cwd, "ts/");
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.typingsDir = plugins.path.join(exports.cwd, "ts/typings/");
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/");
//Files
exports.indexTS = plugins.path.join(exports.cwd, "ts/index.ts");

View File

@ -6,15 +6,13 @@ var NpmtsAssets = require("./npmts.assets");
var NpmtsCheck = require("./npmts.check");
var NpmtsClean = require("./npmts.clean");
var NpmtsCompile = require("./npmts.compile");
var NpmtsConfigFile = require("./npmts.configfile");
var NpmtsTypeDoc = require("./npmts.typedoc");
var NpmtsOptions = require("./npmts.options");
var NpmtsTests = require("./npmts.tests");
exports.promisechain = function (argvArg) {
var done = plugins.Q.defer();
exports.npmtsOra.start();
NpmtsConfigFile.run(argvArg)
.then(NpmtsOptions.run)
NpmtsOptions.run(argvArg)
.then(NpmtsClean.run)
.then(NpmtsCheck.run)
.then(NpmtsCompile.run)

2
dist/npmts.tests.js vendored
View File

@ -60,7 +60,7 @@ var coverage = function (configArg) {
exports.run = function (configArg) {
var done = plugins.Q.defer();
var config = configArg;
if (config.notest != true) {
if (config.test === true) {
npmts_promisechain_1.npmtsOra.text("now starting tests");
plugins.beautylog.log("-------------------------------------------------------\n" +
"*************************** TESTS: ***************************\n" +

16
dist/npmts.typedoc.js vendored
View File

@ -14,8 +14,8 @@ var genTypeDoc = function (configArg) {
target: "es6",
includeDeclarations: true,
// Output options (see typedoc docs)
out: paths.docsDir,
json: plugins.path.join(paths.docsDir, "file.json"),
out: paths.pagesApiDir,
json: plugins.path.join(paths.pagesApiDir, "file.json"),
// TypeDoc options (see typedoc docs)
name: "my-project",
//theme: "default",
@ -27,9 +27,15 @@ var genTypeDoc = function (configArg) {
};
exports.run = function (configArg) {
var done = plugins.Q.defer();
genTypeDoc(configArg)
.then(function () {
if (configArg.docs) {
genTypeDoc(configArg)
.then(function () {
done.resolve(configArg);
});
}
else {
done.resolve(configArg);
});
}
;
return done.promise;
};

View File

@ -1,18 +1,19 @@
{
"name": "npmts",
"version": "5.4.5",
"version": "5.4.13",
"description": "Write npm modules with TypeScript without hassle. TypeScript ready. Fully ES6.",
"main": "dist/index.js",
"bin": {
"npmts": "dist/cli.js"
},
"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/ )",
"setupCheck": "(git clone https://gitlab.com/sandboxzone/sandbox-npmts.git test/)",
"check": "(cd test && npm install && node ../dist/index.js)",
"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": {
"type": "git",
@ -29,36 +30,36 @@
},
"homepage": "https://gitlab.com/pushrocks/npmts#readme",
"dependencies": {
"@types/gulp": "^3.8.28",
"@types/gulp": "^3.8.30",
"@types/minimatch": "^2.0.28",
"@types/q": "^0.0.27",
"@types/shelljs": "^0.3.27",
"babel-preset-es2015": "^6.9.0",
"beautylog": "5.0.18",
"@types/q": "^0.x.x",
"@types/shelljs": "^0.3.29",
"babel-preset-es2015": "^6.13.2",
"beautylog": "5.0.20",
"depcheck": "^0.6.4",
"early": "^2.0.13",
"early": "^2.0.25",
"gulp": "3.9.1",
"gulp-babel": "^6.1.2",
"gulp-function": "^1.3.6",
"gulp-inject-modules": "^1.0.0",
"gulp-istanbul": "^1.0.0",
"gulp-mocha": "^2.2.0",
"gulp-istanbul": "^1.1.0",
"gulp-mocha": "^3.0.1",
"gulp-sourcemaps": "^1.6.0",
"gulp-typedoc": "^2.0.0",
"lodash": "^4.14.0",
"npmextra": "^1.0.8",
"lodash": "^4.15.0",
"npmextra": "^1.0.9",
"projectinfo": "1.0.3",
"q": "^1.4.1",
"shelljs": "^0.7.3",
"smartcli": "1.0.4",
"smartcov": "0.0.9",
"smartcov": "1.0.0",
"smartenv": "1.2.5",
"smartfile": "4.0.12",
"smartfile": "4.0.13",
"smartpath": "3.2.2",
"smartstring": "^2.0.15",
"smartstring": "^2.0.17",
"source-map-support": "^0.4.2",
"tsn": "^1.0.10",
"typedoc": "^0.4.4",
"tsn": "^1.0.12",
"typedoc": "^0.4.5",
"typescript": "^2.0.0-dev.20160630",
"typings-global": "*"
},

View File

@ -4,27 +4,20 @@ import paths = require("./npmts.paths");
import {npmtsOra} from "./npmts.promisechain";
let removeDist = function(){
npmtsOra.text("cleaning " + "dist".yellow + " folder");
npmtsOra.text("cleaning dist folder");
return plugins.smartfile.fs.remove(paths.distDir);
};
let removeTypings = function(){
let done = plugins.Q.defer();
npmtsOra.text("cleaning " + "typings".yellow + " folder");
if(false){
//plugins.smartfile.fsaction.remove(paths.typingsDir)
// .then(done.resolve);
} else {
done.resolve();
}
return done.promise;
let removePages = function(){
npmtsOra.text("cleaning pages folder");
return plugins.smartfile.fs.remove(paths.pagesDir);
};
export let run = function(configArg){
npmtsOra.text("cleaning up from previous builds...");
let done = plugins.Q.defer();
removeDist()
.then(removeTypings)
.then(removePages)
.then(function(){
plugins.beautylog.ok("Cleaned up from previous builds!");
done.resolve(configArg);

View File

@ -1,32 +0,0 @@
import "typings-global";
import plugins = require("./npmts.plugins");
import paths = require("./npmts.paths");
import {npmtsOra} from "./npmts.promisechain";
export var run = function(argvArg){
let done = plugins.Q.defer();
npmtsOra.text("looking for npmextra.json");
let defaultConfig = {
mode: "default",
notest:false
};
if(argvArg.notest){
defaultConfig.notest = true;
};
let config = plugins.npmextra.dataFor({
toolName:"npmts",
defaultSettings:defaultConfig,
cwd:paths.cwd
});
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);
};
done.resolve(config);
return done.promise;
};

View File

@ -1,36 +1,79 @@
import "typings-global";
import plugins = require("./npmts.plugins");
import paths = require("./npmts.paths");
import {npmtsOra} from "./npmts.promisechain";
export var run = function(configArg){
var done = plugins.Q.defer();
var config = configArg;
export type npmtsMode = "default" | "custom"
npmtsOra.text("now determining build options...");
export interface npmtsConfig {
argv:any,
coverageTreshold:number,
docs:boolean,
mode: npmtsMode,
test:boolean,
testTs:any,
ts:any,
tsOptions:any
};
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
if (config.mode == "default"){
config.typings = [
"./ts/typings.json"
];
config.ts = {
["./ts/**/*.ts"]: "./dist/"
};
config.testTs = {
["./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!");
done.resolve(config);

View File

@ -1,21 +1,24 @@
import "typings-global";
import plugins = require("./npmts.plugins");
//Npmts Paths
// NPMTS Paths
export let npmtsPackageRoot = plugins.path.join(__dirname,"../");
//Project paths
// Project paths
export let cwd = process.cwd();
//Directories
// Directories
export let tsDir = plugins.path.join(cwd,"ts/");
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 typingsDir = plugins.path.join(cwd,"ts/typings/");
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/");
//Files

View File

@ -8,7 +8,6 @@ import NpmtsAssets = require("./npmts.assets");
import NpmtsCheck = require("./npmts.check");
import NpmtsClean = require("./npmts.clean");
import NpmtsCompile = require("./npmts.compile");
import NpmtsConfigFile = require("./npmts.configfile");
import NpmtsTypeDoc = require("./npmts.typedoc");
import NpmtsOptions = require("./npmts.options");
import NpmtsTests = require("./npmts.tests");
@ -16,8 +15,7 @@ import NpmtsTests = require("./npmts.tests");
export let promisechain = function(argvArg){
let done = plugins.Q.defer();
npmtsOra.start();
NpmtsConfigFile.run(argvArg)
.then(NpmtsOptions.run)
NpmtsOptions.run(argvArg)
.then(NpmtsClean.run)
.then(NpmtsCheck.run)
.then(NpmtsCompile.run)

View File

@ -66,7 +66,7 @@ let coverage = function(configArg){
export let run = function(configArg) {
let done = plugins.Q.defer();
let config = configArg;
if(config.notest != true){
if(config.test === true){
npmtsOra.text("now starting tests");
plugins.beautylog.log(
"-------------------------------------------------------\n" +

View File

@ -1,40 +1,44 @@
import "typings-global";
import plugins = require("./npmts.plugins");
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();
npmtsOra.text("now generating " + "TypeDoc documentation".yellow);
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({
// 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",
// TypeScript options (see typescript docs)
module: "commonjs",
target: "es6",
includeDeclarations: true,
// Output options (see typedoc docs)
out: paths.pagesApiDir,
json: plugins.path.join(paths.pagesApiDir, "file.json"),
// TypeDoc options (see typedoc docs)
name: "my-project",
//theme: "default",
ignoreCompilerErrors: true,
version: true,
}))
.pipe(plugins.g.gFunction(done.resolve,"atEnd"));
ignoreCompilerErrors: true,
version: true,
}))
.pipe(plugins.g.gFunction(done.resolve, "atEnd"));
return done.promise;
};
export let run = function(configArg){
export let run = function (configArg) {
let done = plugins.Q.defer();
genTypeDoc(configArg)
.then(() => {
done.resolve(configArg);
});
if (configArg.docs) {
genTypeDoc(configArg)
.then(() => {
done.resolve(configArg);
});
} else {
done.resolve(configArg);
};
return done.promise;
};