Compare commits

...

15 Commits

Author SHA1 Message Date
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
36316e63b2 5.3.9 2016-07-11 14:42:43 +02:00
5c5e88c226 further improve README 2016-07-11 14:42:36 +02:00
af968f65df update README 2016-07-11 13:46:44 +02:00
f0cc2f4cd6 5.3.8 2016-07-08 04:00:56 +02:00
f167226830 update sourcemap handling 2016-07-08 04:00:52 +02:00
3e49b365b6 small fix 2016-07-01 05:58:51 +02:00
c833374fdd 5.3.7 2016-07-01 05:44:37 +02:00
778f057d87 fix 2016-07-01 05:44:34 +02:00
8f57bf4dd5 remove debug 2016-07-01 05:25:49 +02:00
11 changed files with 61 additions and 1281 deletions

View File

@ -45,17 +45,3 @@ trigger:
- tags
tags:
- docker
pages:
stage: page
script:
- npmci test lts
- mkdir .public
- cp -r test/assets/docs/ .public
- cp -r test/assets/coverage/ .public
- mv .public public
artifacts:
paths:
- public
only:
- tags

View File

@ -3,7 +3,6 @@ Write npm modules with TypeScript without hassle.
## Status
[![build status](https://gitlab.com/pushrocks/npmts/badges/master/build.svg)](https://gitlab.com/pushrocks/npmts/commits/master)
[![Build status](https://ci.appveyor.com/api/projects/status/22fuqa0uv21rcjh4/branch/master?svg=true)](https://ci.appveyor.com/project/philkunz/npmts/branch/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)
@ -14,10 +13,13 @@ 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 checker:
First install npmts globally, then install the npmts-g locally.
> **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.
```sh
npm install npmts -g # installs npmts globally
@ -28,7 +30,7 @@ Then add it to your package.json's script section to trigger a build:
```json
"scripts": {
"test": "npmts"
"test": "(npmts)"
}
```
@ -49,28 +51,13 @@ the npmts.json is the main config file. You can use it to customize the behaviou
```json
{
"mode":"default",
"codecov":{
"publish":true,
"token":"sometoken"
},
"ts":{
"./customdir/*.ts":"./"
},
"docs": {
"publish":true,
"destination":"github"
},
"tsOptions":{
"declaration":false,
"target":"ES6"
},
"typings":[
"./ts/typings.json",
"./subts1/typings.json",
"./subts2/typings.json",
"./customdir/typings.json"
],
"typingsInclude":"auto",
"cli":true
}
```
@ -84,14 +71,6 @@ the npmts.json is the main config file. You can use it to customize the behaviou
| `"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
**npmts** looks for `./ts/typings.json` by default and installs any defined typings to `.ts/typings/`.
> Note: You can reference the typings files in any of your TypeScript code with a
`/// <reference path="/some/path/main.d.ts">`
We are currently working on a "typingsInclude" option, that will autoload any typings during compilation.
tsconfig is NOT supported, since it would render this module useless
#### TypeScript
by default npmts looks for `./ts/*.ts` and `./test/test.ts` that will compile to
`./dist/*.js` and `./test/test.js`
@ -111,7 +90,8 @@ 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.
> Note: If you don't want declaration files, set tsOptions.declaration to false in npmts.json
#### Typings for third party modules that do not bundle declaration files
NPMTS does no longer supports typings.json. Instead use the new TypeScript 2.x approach to typings using the @types/ npm scope.
#### Instrumentalize Code
npmts instrumentalizes (using istanbul) the created JavaScript code to create a coverage report.
@ -124,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.

26
dist/npmts.jsdoc.js vendored
View File

@ -3,26 +3,24 @@ 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 genEsDoc = 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: {
npmts_promisechain_1.npmtsOra.text("now generating " + "EsDoc documentation".yellow);
plugins.beautylog.log("ESDoc Output:");
var esdocConfig = {
source: paths.distDir,
destination: paths.docsDir
}
}, function () {
plugins.beautylog.ok("JsDoc documentation has been generated!");
};
plugins.esdoc.generate(esdocConfig, plugins.esdocPublisher);
plugins.beautylog.ok("Docs by EsDoc have been created!");
done.resolve(configArg);
}));
return done.promise;
};
exports.run = function (configArg) {
var done = plugins.Q.defer();
genJsdoc(configArg)
.then(done.resolve);
genEsDoc(configArg)
.then(function () {
done.resolve(configArg);
});
return done.promise;
};

View File

@ -1,12 +1,14 @@
import "typings-global";
export import beautylog = require("beautylog");
export declare let esdoc: any;
export declare let esdocPublisher: any;
export declare let gulp: any;
export declare let g: {
gFunction: any;
istanbul: any;
jsdoc3: any;
mocha: any;
replace: any;
sourcemaps: any;
};
export declare let lodashObject: any;
export declare let merge2: any;

View File

@ -1,13 +1,15 @@
"use strict";
require("typings-global");
exports.beautylog = require("beautylog");
exports.esdoc = require("esdoc");
exports.esdocPublisher = require("esdoc/out/src/Publisher/publish");
exports.gulp = require("gulp");
exports.g = {
gFunction: require("gulp-function"),
istanbul: require("gulp-istanbul"),
jsdoc3: require("gulp-jsdoc3"),
mocha: require("gulp-mocha"),
replace: require("gulp-replace")
replace: require("gulp-replace"),
sourcemaps: require("gulp-sourcemaps")
};
exports.lodashObject = require('lodash/fp/object');
exports.merge2 = require("merge2");

2
dist/npmts.tests.js vendored
View File

@ -11,7 +11,9 @@ var istanbul = function (configArg) {
npmts_promisechain_1.npmtsOra.text("Instrumentalizing transpiled JS...");
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.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!");

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{
"name": "npmts",
"version": "5.3.6",
"version": "5.3.10",
"description": "write npm modules with TypeScript",
"main": "dist/index.js",
"bin": {
@ -12,8 +12,7 @@
"setupCheck": "(git clone https://gitlab.com/sandboxzone/sandbox-npmts.git test/)",
"check": "(cd test && node ../dist/index.js)",
"checkVersion": "(cd test/ && node ../dist/index.js -v)",
"checkNoTest": "(cd test && node ../dist/index.js --notest)",
"install": "(mkdir test/)"
"checkNoTest": "(cd test && node ../dist/index.js --notest)"
},
"repository": {
"type": "git",
@ -30,11 +29,12 @@
},
"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": "^2.0.27-alpha",
"@types/q": "0.0.26-alpha",
"@types/shelljs": "^0.3.26-alpha",
"beautylog": "5.0.13",
"early": "^2.0.13",
"esdoc": "^0.4.7",
"gulp": "3.9.1",
"gulp-concat": "^2.6.0",
"gulp-function": "^1.3.6",
@ -43,6 +43,7 @@
"gulp-jsdoc3": "^0.3.0",
"gulp-mocha": "^2.2.0",
"gulp-replace": "^0.5.4",
"gulp-sourcemaps": "^1.6.0",
"lodash": "^4.13.1",
"merge2": "1.0.2",
"projectinfo": "1.0.3",
@ -54,9 +55,9 @@
"smartenv": "1.2.5",
"smartfile": "4.0.10",
"smartpath": "3.2.2",
"smartstring": "^2.0.10",
"smartstring": "^2.0.14",
"source-map-support": "^0.4.1",
"tsn": "^1.0.3",
"tsn": "^1.0.6",
"typescript": "^2.0.0-dev.20160630",
"typings-global": "*"
},

View File

@ -3,28 +3,26 @@ import plugins = require("./npmts.plugins");
import paths = require("./npmts.paths");
import {npmtsOra} from "./npmts.promisechain";
let genJsdoc = function(configArg){
let genEsDoc = 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: {
npmtsOra.text("now generating " + "EsDoc documentation".yellow);
plugins.beautylog.log("ESDoc Output:");
let esdocConfig = {
source: paths.distDir,
destination: paths.docsDir
}
}, function(){
plugins.beautylog.ok("JsDoc documentation has been generated!");
done.resolve(configArg)
}));
};
plugins.esdoc.generate(esdocConfig,plugins.esdocPublisher);
plugins.beautylog.ok("Docs by EsDoc have been created!");
done.resolve(configArg);
return done.promise;
};
export let run = function(configArg){
let done = plugins.Q.defer();
genJsdoc(configArg)
.then(done.resolve);
genEsDoc(configArg)
.then(() => {
done.resolve(configArg);
});
return done.promise;
};

View File

@ -1,12 +1,14 @@
import "typings-global";
export import beautylog = require("beautylog");
export let esdoc = require("esdoc");
export let esdocPublisher = require("esdoc/out/src/Publisher/publish");
export let gulp = require("gulp");
export let g = {
gFunction: require("gulp-function"),
istanbul: require("gulp-istanbul"),
jsdoc3: require("gulp-jsdoc3"),
mocha: require("gulp-mocha"),
replace: require("gulp-replace")
replace: require("gulp-replace"),
sourcemaps: require("gulp-sourcemaps")
};
export let lodashObject = require('lodash/fp/object');
export let merge2 = require("merge2");

View File

@ -11,7 +11,9 @@ let istanbul = function (configArg) {
npmtsOra.text("Instrumentalizing transpiled JS...");
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.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!");