fixed declaration file issue
This commit is contained in:
		
							
								
								
									
										33
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								README.md
									
									
									
									
									
								
							@@ -10,6 +10,7 @@ Write npm modules with TypeScript without hassle.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
## What is NPMTS?
 | 
					## What is NPMTS?
 | 
				
			||||||
NPMTS is your friend when it comes to write, test, publish and document NPM modules written in TypeScript.
 | 
					NPMTS is your friend when it comes to write, test, publish and document NPM modules written in TypeScript.
 | 
				
			||||||
 | 
					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-npmg on Dockerhub](https://hub.docker.com/r/hosttoday/ht-docker-npmg/)
 | 
				
			||||||
@@ -29,9 +30,7 @@ Then use it in package.json's script section to trigger a build:
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Default behaviour
 | 
					### Default task execution order
 | 
				
			||||||
 | 
					 | 
				
			||||||
**Execution order of tasks**
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
1. Check config in ./npmts.json
 | 
					1. Check config in ./npmts.json
 | 
				
			||||||
1. Clean up from any previous builds (old js files)
 | 
					1. Clean up from any previous builds (old js files)
 | 
				
			||||||
@@ -51,9 +50,14 @@ the npmts.json is the main config file. You can use it to customize the behaviou
 | 
				
			|||||||
```json
 | 
					```json
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  "mode":"default",
 | 
					  "mode":"default",
 | 
				
			||||||
 | 
					  "codecov":true,
 | 
				
			||||||
  "ts":{
 | 
					  "ts":{
 | 
				
			||||||
    "./customdir/*.ts":"./"
 | 
					    "./customdir/*.ts":"./"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					  "docs": {
 | 
				
			||||||
 | 
					    "publish":true,
 | 
				
			||||||
 | 
					    "destination":"github"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
  "tsOptions":{
 | 
					  "tsOptions":{
 | 
				
			||||||
    "declaration":false,
 | 
					    "declaration":false,
 | 
				
			||||||
    "target":"ES6"
 | 
					    "target":"ES6"
 | 
				
			||||||
@@ -65,21 +69,18 @@ the npmts.json is the main config file. You can use it to customize the behaviou
 | 
				
			|||||||
    "./customdir/typings.json"
 | 
					    "./customdir/typings.json"
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "typingsInclude":"auto",
 | 
					  "typingsInclude":"auto",
 | 
				
			||||||
  "codecov":true,
 | 
					 | 
				
			||||||
  "docs": {
 | 
					 | 
				
			||||||
    "publish":true
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  "cli":true
 | 
					  "cli":true
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| key | description |
 | 
					| key | default value | description |
 | 
				
			||||||
| --- | --- |
 | 
					| --- | --- | --- |
 | 
				
			||||||
| codecov | if true, coverage data will be uploaded to codecov when running on travis |
 | 
					| `"codecov"` | `true` | if true, coverage data will be uploaded to codecov when running on travis |
 | 
				
			||||||
| docs | `{"publish":true, destination:"github"}` lets you control what happens with your module documentation |
 | 
					| `"docs"` | `{"publish":"false"}` | `{"publish":true, destination:"github"}` lets you control what happens with your module documentation |
 | 
				
			||||||
| mode | "default" will do some defualt stuff, "custom" only does what you specify |
 | 
					| `"mode"` | `"default"` | "default" will do some defualt stuff, "custom" only does what you specify |
 | 
				
			||||||
| tsOptions | specify options for tsc |
 | 
					| `"tsOptions"` | `{"target":"ES5", "declaration":"true"}` | specify options for tsc |
 | 
				
			||||||
|  |  |
 | 
					| `"typings"` | `["./ts/typings.json"]` | allows you to specify multiple locations for typings.json to install. This is needed for modules that do not yet bundle typings |
 | 
				
			||||||
 | 
					| `"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. |
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Typings
 | 
					#### Typings
 | 
				
			||||||
**npmts** looks for `./ts/typings.json` by default and installs any defined typings to `.ts/typings/`.
 | 
					**npmts** looks for `./ts/typings.json` by default and installs any defined typings to `.ts/typings/`.
 | 
				
			||||||
@@ -121,8 +122,8 @@ 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-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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										40
									
								
								dist/npmts.compile.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										40
									
								
								dist/npmts.compile.js
									
									
									
									
										vendored
									
									
								
							@@ -3,6 +3,34 @@
 | 
				
			|||||||
var plugins = require("./npmts.plugins");
 | 
					var plugins = require("./npmts.plugins");
 | 
				
			||||||
var paths = require("./npmts.paths");
 | 
					var paths = require("./npmts.paths");
 | 
				
			||||||
var helpers = require("./npmts.compile.helpers");
 | 
					var helpers = require("./npmts.compile.helpers");
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * handles definition to make them fit for modular use
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					var definitionHandler = function (configArg) {
 | 
				
			||||||
 | 
					    plugins.beautylog.log("now making declaration files ready");
 | 
				
			||||||
 | 
					    var done = plugins.Q.defer();
 | 
				
			||||||
 | 
					    var configTsLenght = Object.keys(configArg.ts).length;
 | 
				
			||||||
 | 
					    if (configTsLenght == 0) {
 | 
				
			||||||
 | 
					        plugins.beautylog.warn("No declaration files found... Are you sure you don't want them?");
 | 
				
			||||||
 | 
					        done.resolve(configArg); //if there are no definition files, resolve...
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    var localCounter = 0;
 | 
				
			||||||
 | 
					    for (var key in configArg.ts) {
 | 
				
			||||||
 | 
					        var distPath = configArg.ts[key];
 | 
				
			||||||
 | 
					        var stream = plugins.gulp.src(plugins.path.join(distPath, "**/*.d.ts"))
 | 
				
			||||||
 | 
					            .pipe(plugins.g.replace(plugins.smartstring.typescript.regexReferencePath, ""))
 | 
				
			||||||
 | 
					            .pipe(plugins.gulp.dest(distPath))
 | 
				
			||||||
 | 
					            .pipe(plugins.g.gFunction(function () {
 | 
				
			||||||
 | 
					            localCounter++;
 | 
				
			||||||
 | 
					            if (localCounter == configTsLenght) {
 | 
				
			||||||
 | 
					                plugins.beautylog.ok("declaration files ready!!!");
 | 
				
			||||||
 | 
					                done.resolve(configArg);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            ;
 | 
				
			||||||
 | 
					        }, "atEnd"));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return done.promise;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
exports.run = function (configArg) {
 | 
					exports.run = function (configArg) {
 | 
				
			||||||
    var done = plugins.Q.defer();
 | 
					    var done = plugins.Q.defer();
 | 
				
			||||||
    var config = configArg;
 | 
					    var config = configArg;
 | 
				
			||||||
@@ -36,17 +64,13 @@ exports.run = function (configArg) {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    moduleStream.on("queueDrain", function () {
 | 
					    moduleStream.on("queueDrain", function () {
 | 
				
			||||||
        plugins.beautylog.ok("TypeScript has been compiled!");
 | 
					 | 
				
			||||||
        moduleStream.on("finish", function () {
 | 
					        moduleStream.on("finish", function () {
 | 
				
			||||||
            try {
 | 
					            plugins.beautylog.ok("TypeScript has been compiled!");
 | 
				
			||||||
                if (config.mode = "default")
 | 
					            definitionHandler(config)
 | 
				
			||||||
                    plugins.fs.copySync(plugins.path.join(paths.cwd, "ts/typings"), plugins.path.join(paths.cwd, "dist/typings"));
 | 
					                .then(function () {
 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            catch (err) {
 | 
					 | 
				
			||||||
                plugins.beautylog.warn("failed to copy external typings for full module declaration support");
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
                done.resolve(config);
 | 
					                done.resolve(config);
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
        moduleStream.end();
 | 
					        moduleStream.end();
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    /*==================== END TS Compilation =====================*/
 | 
					    /*==================== END TS Compilation =====================*/
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								dist/npmts.plugins.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/npmts.plugins.js
									
									
									
									
										vendored
									
									
								
							@@ -9,6 +9,7 @@ exports.g = {
 | 
				
			|||||||
    istanbul: require("gulp-istanbul"),
 | 
					    istanbul: require("gulp-istanbul"),
 | 
				
			||||||
    jsdoc3: require("gulp-jsdoc3"),
 | 
					    jsdoc3: require("gulp-jsdoc3"),
 | 
				
			||||||
    mocha: require("gulp-mocha"),
 | 
					    mocha: require("gulp-mocha"),
 | 
				
			||||||
 | 
					    replace: require("gulp-replace"),
 | 
				
			||||||
    sourcemaps: require("gulp-sourcemaps"),
 | 
					    sourcemaps: require("gulp-sourcemaps"),
 | 
				
			||||||
    typescript: require("gulp-typescript"),
 | 
					    typescript: require("gulp-typescript"),
 | 
				
			||||||
    typings: require("gulp-typings")
 | 
					    typings: require("gulp-typings")
 | 
				
			||||||
@@ -25,4 +26,5 @@ exports.smartcov = require("smartcov");
 | 
				
			|||||||
exports.smartenv = require("smartenv");
 | 
					exports.smartenv = require("smartenv");
 | 
				
			||||||
exports.smartfile = require("smartfile");
 | 
					exports.smartfile = require("smartfile");
 | 
				
			||||||
exports.smartpath = require("smartpath");
 | 
					exports.smartpath = require("smartpath");
 | 
				
			||||||
 | 
					exports.smartstring = require("smartstring");
 | 
				
			||||||
exports.sourceMapSupport = require("source-map-support").install(); // this is required to display errors correctly during testing
 | 
					exports.sourceMapSupport = require("source-map-support").install(); // this is required to display errors correctly during testing
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -35,9 +35,10 @@
 | 
				
			|||||||
    "gulp-istanbul": "^0.10.4",
 | 
					    "gulp-istanbul": "^0.10.4",
 | 
				
			||||||
    "gulp-jsdoc3": "^0.2.1",
 | 
					    "gulp-jsdoc3": "^0.2.1",
 | 
				
			||||||
    "gulp-mocha": "^2.2.0",
 | 
					    "gulp-mocha": "^2.2.0",
 | 
				
			||||||
 | 
					    "gulp-replace": "^0.5.4",
 | 
				
			||||||
    "gulp-sourcemaps": "^2.0.0-alpha",
 | 
					    "gulp-sourcemaps": "^2.0.0-alpha",
 | 
				
			||||||
    "gulp-typescript": "2.13.0",
 | 
					    "gulp-typescript": "2.13.0",
 | 
				
			||||||
    "gulp-typings": "1.3.4",
 | 
					    "gulp-typings": "1.3.5",
 | 
				
			||||||
    "lodash": "^4.11.1",
 | 
					    "lodash": "^4.11.1",
 | 
				
			||||||
    "merge2": "1.0.2",
 | 
					    "merge2": "1.0.2",
 | 
				
			||||||
    "projectinfo": "1.0.1",
 | 
					    "projectinfo": "1.0.1",
 | 
				
			||||||
@@ -48,7 +49,8 @@
 | 
				
			|||||||
    "smartcov": "0.0.6",
 | 
					    "smartcov": "0.0.6",
 | 
				
			||||||
    "smartenv": "1.2.2",
 | 
					    "smartenv": "1.2.2",
 | 
				
			||||||
    "smartfile": "3.0.5",
 | 
					    "smartfile": "3.0.5",
 | 
				
			||||||
    "smartpath": "3.1.5",
 | 
					    "smartpath": "3.2.0",
 | 
				
			||||||
 | 
					    "smartstring": "^1.0.2",
 | 
				
			||||||
    "source-map-support": "^0.4.0"
 | 
					    "source-map-support": "^0.4.0"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "devDependencies": {}
 | 
					  "devDependencies": {}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1
									
								
								test/assets/dist/index.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								test/assets/dist/index.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -1,4 +1,3 @@
 | 
				
			|||||||
/// <reference path="typings/main.d.ts" />
 | 
					 | 
				
			||||||
declare let testplugin: {
 | 
					declare let testplugin: {
 | 
				
			||||||
    logSomething: () => void;
 | 
					    logSomething: () => void;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1
									
								
								test/assets/test/test.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								test/assets/test/test.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -1,2 +1 @@
 | 
				
			|||||||
/// <reference path="../ts/typings/main.d.ts" />
 | 
					 | 
				
			||||||
declare var testplugin: any;
 | 
					declare var testplugin: any;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,36 @@ import paths = require("./npmts.paths");
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import helpers = require("./npmts.compile.helpers");
 | 
					import helpers = require("./npmts.compile.helpers");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * handles definition to make them fit for modular use
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					let definitionHandler = function(configArg){
 | 
				
			||||||
 | 
					    plugins.beautylog.log("now making declaration files ready");
 | 
				
			||||||
 | 
					    let done = plugins.Q.defer();
 | 
				
			||||||
 | 
					    let configTsLenght = Object.keys(configArg.ts).length;
 | 
				
			||||||
 | 
					    if(configTsLenght == 0) {
 | 
				
			||||||
 | 
					        plugins.beautylog.warn("No declaration files found... Are you sure you don't want them?");
 | 
				
			||||||
 | 
					        done.resolve(configArg); //if there are no definition files, resolve...
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    let localCounter = 0;
 | 
				
			||||||
 | 
					    for (let key in configArg.ts){
 | 
				
			||||||
 | 
					        let distPath = configArg.ts[key];
 | 
				
			||||||
 | 
					        let stream = plugins.gulp.src(plugins.path.join(distPath,"**/*.d.ts"))
 | 
				
			||||||
 | 
					            .pipe(plugins.g.replace(plugins.smartstring.typescript.regexReferencePath,""))
 | 
				
			||||||
 | 
					            .pipe(plugins.gulp.dest(distPath))
 | 
				
			||||||
 | 
					            .pipe(plugins.g.gFunction(function(){
 | 
				
			||||||
 | 
					                localCounter++
 | 
				
			||||||
 | 
					                if(localCounter == configTsLenght){
 | 
				
			||||||
 | 
					                    plugins.beautylog.ok("declaration files ready!!!");
 | 
				
			||||||
 | 
					                    done.resolve(configArg)
 | 
				
			||||||
 | 
					                };
 | 
				
			||||||
 | 
					            },"atEnd"));
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return done.promise;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export let run = function (configArg) {
 | 
					export let run = function (configArg) {
 | 
				
			||||||
    let done = plugins.Q.defer();
 | 
					    let done = plugins.Q.defer();
 | 
				
			||||||
    let config = configArg;
 | 
					    let config = configArg;
 | 
				
			||||||
@@ -43,19 +73,13 @@ export let run = function (configArg) {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    moduleStream.on("queueDrain", function () {
 | 
					    moduleStream.on("queueDrain", function () {
 | 
				
			||||||
        plugins.beautylog.ok("TypeScript has been compiled!");
 | 
					 | 
				
			||||||
        moduleStream.on("finish", function () {
 | 
					        moduleStream.on("finish", function () {
 | 
				
			||||||
            try {
 | 
					            plugins.beautylog.ok("TypeScript has been compiled!");
 | 
				
			||||||
                if(config.mode = "default") plugins.fs.copySync(
 | 
					            definitionHandler(config)
 | 
				
			||||||
                    plugins.path.join(paths.cwd,"ts/typings"),
 | 
					                .then(function(){
 | 
				
			||||||
                    plugins.path.join(paths.cwd,"dist/typings")
 | 
					 | 
				
			||||||
                );
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            catch (err){
 | 
					 | 
				
			||||||
                plugins.beautylog.warn("failed to copy external typings for full module declaration support");
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
                    done.resolve(config);
 | 
					                    done.resolve(config);
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
        moduleStream.end();
 | 
					        moduleStream.end();
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    /*==================== END TS Compilation =====================*/
 | 
					    /*==================== END TS Compilation =====================*/
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,6 +8,7 @@ export let g = {
 | 
				
			|||||||
    istanbul: require("gulp-istanbul"),
 | 
					    istanbul: require("gulp-istanbul"),
 | 
				
			||||||
    jsdoc3: require("gulp-jsdoc3"),
 | 
					    jsdoc3: require("gulp-jsdoc3"),
 | 
				
			||||||
    mocha: require("gulp-mocha"),
 | 
					    mocha: require("gulp-mocha"),
 | 
				
			||||||
 | 
					    replace: require("gulp-replace"),
 | 
				
			||||||
    sourcemaps: require("gulp-sourcemaps"),
 | 
					    sourcemaps: require("gulp-sourcemaps"),
 | 
				
			||||||
    typescript: require("gulp-typescript"),
 | 
					    typescript: require("gulp-typescript"),
 | 
				
			||||||
    typings: require("gulp-typings")
 | 
					    typings: require("gulp-typings")
 | 
				
			||||||
@@ -25,4 +26,5 @@ export let smartcov = require("smartcov");
 | 
				
			|||||||
export let smartenv = require("smartenv");
 | 
					export let smartenv = require("smartenv");
 | 
				
			||||||
export let smartfile = require("smartfile");
 | 
					export let smartfile = require("smartfile");
 | 
				
			||||||
export let smartpath = require("smartpath");
 | 
					export let smartpath = require("smartpath");
 | 
				
			||||||
 | 
					export let smartstring = require("smartstring");
 | 
				
			||||||
export let sourceMapSupport = require("source-map-support").install(); // this is required to display errors correctly during testing
 | 
					export let sourceMapSupport = require("source-map-support").install(); // this is required to display errors correctly during testing
 | 
				
			||||||
		Reference in New Issue
	
	Block a user