Compare commits

...

12 Commits

Author SHA1 Message Date
36c002581a 5.4.6 2016-08-13 23:54:21 +02:00
db1cfe4746 add --nodocs option 2016-08-13 23:54:17 +02:00
2c254a2ecf 5.4.5 2016-08-13 22:23:22 +02:00
425bc6150a now using require.resolve for getting babel plugins. fixes local dependency issue. 2016-08-13 22:23:11 +02:00
b2aaa51882 5.4.4 2016-08-02 15:49:20 +02:00
8ee6623984 now getting missing devDependencies as well 2016-08-02 15:49:16 +02:00
91ec17c51d 5.4.3 2016-07-28 04:28:43 +02:00
646dbdaa3a update README 2016-07-28 04:28:28 +02:00
4550fcd375 remove codecov badge 2016-07-28 04:12:27 +02:00
4d1b992193 add node version badge 2016-07-28 04:10:32 +02:00
cf2d482798 small README fix 2016-07-28 04:08:46 +02:00
43853e4d71 improve README 2016-07-28 04:06:20 +02:00
10 changed files with 82 additions and 55 deletions

View File

@ -6,7 +6,7 @@ Write npm modules with TypeScript without hassle. TypeScript ready. Fully ES6.
[![Dependency Status](https://david-dm.org/pushrocks/npmts.svg)](https://david-dm.org/pushrocks/npmts) [![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 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) [![bitHound Code](https://www.bithound.io/github/pushrocks/npmts/badges/code.svg)](https://www.bithound.io/github/pushrocks/npmts)
[![codecov.io](https://codecov.io/github/pushrocks/npmts/coverage.svg?branch=master)](https://codecov.io/github/pushrocks/npmts?branch=master) [![node](https://img.shields.io/badge/node->=%206.x.x-blue.svg)](https://nodejs.org/dist/latest-v6.x/docs/api/)
## 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.
@ -38,12 +38,13 @@ Then add it to your package.json's script section to trigger a build:
1. **Config:** Check config in ./npmextra.json (Check out [npmextra](https://www.npmjs.com/package/npmextra)) 1. **Config:** Check config in ./npmextra.json (Check out [npmextra](https://www.npmjs.com/package/npmextra))
1. **Clean:** Clean up from any previous builds (old js files) 1. **Clean:** Clean up from any previous builds (old js files)
1. **Transpile:** Transpile TypeScript with **inline sourcemaps** and **declaration files** to ES6 1. **Check:** Check project for typings declaration in package.json, unused dependencies and missing dependencies
1. **Transpile:** Transpile TypeScript with **inline sourcemaps** and **declaration files** to ES target
1. **Documentation:** Create TypeDoc Documentation from TypeScript files 1. **Documentation:** Create TypeDoc Documentation from TypeScript files
1. **Test:** Babelify ES6 to ES5 on the fly, instrumentalize ES5 JavaScript with istanbul and run tests with Mocha. 1. **Test:** Babelify ES6 to ES5 on the fly, instrumentalize ES5 JavaScript with istanbul and run tests with Mocha.
### npmextra.json ### npmextra.json
the npmts section in npmtsextra.json can be used to configure npmts. the npmts section in npmextra.json can be used to configure npmts.
```json ```json
{ {
@ -64,6 +65,7 @@ the npmts section in npmtsextra.json can be used to configure npmts.
| key | default value | description | | key | default value | description |
| --- | --- | --- | | --- | --- | --- |
| `"mode"` | `"default"` | "default" will do some default stuff, "custom" only does what you specify | | `"mode"` | `"default"` | "default" will do some default stuff, "custom" only does what you specify |
| `"ts"` | `{"./ts/*.ts":"./","./test/test.ts":"./test/"}` | allows you to define multiple ts portions |
| `"tsOptions"` | `{"target":"ES5", "declaration":"true"}` | specify options for tsc | | `"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. | | `"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. |
@ -74,7 +76,7 @@ by default npmts looks for `./ts/*.ts` and `./test/test.ts` that will compile to
Use commonjs module system for wiring up files. Use commonjs module system for wiring up files.
### Declaration files ### Declaration files
**npmts** also creates an `./dist/index.d.ts` declaration file by default. **npmts** also creates declaration files like `./dist/index.d.ts` by default.
You can reference it in your package.json like this. You can reference it in your package.json like this.
```json ```json
@ -88,7 +90,7 @@ and tsc will pick up the declaration file automatically.
## Some notes: ## Some notes:
#### Typings for third party modules that do not bundle declaration files #### 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. NPMTS no longer supports typings.json. Instead use the new TypeScript 2.x approach to typings using the @types/ npm scope.
#### Instrumentalize Code #### Instrumentalize Code
npmts instrumentalizes (using istanbul) the created JavaScript code to create a coverage report. npmts instrumentalizes (using istanbul) the created JavaScript code to create a coverage report.
@ -109,6 +111,11 @@ thanks to autogenerated source maps.
* 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
* Use [npmdocker](https://www.npmjs.com/package/npmdocker) for running tests consistently with docker. * Use [npmdocker](https://www.npmjs.com/package/npmdocker) for running tests consistently with docker.
## Future Scope:
* automatically manage badges in README
* manage tslint to enforce code best practices
* tear down any differences between local and CI environments by using brand new npmdocker
## About the authors: ## About the authors:
[![Project Phase](https://mediaserve.lossless.digital/lossless.com/img/createdby_github.svg)](https://lossless.com/) [![Project Phase](https://mediaserve.lossless.digital/lossless.com/img/createdby_github.svg)](https://lossless.com/)

19
dist/npmts.check.js vendored
View File

@ -55,18 +55,13 @@ var checkDependencies = function (configArg) {
plugins.beautylog.info("exiting due to missing dependencies in package.json"); plugins.beautylog.info("exiting due to missing dependencies in package.json");
process.exit(1); process.exit(1);
} }
for (var _d = 0, _e = unused.using; _d < _e.length; _d++) { for (var _d = 0, _e = unused.invalidFiles; _d < _e.length; _d++) {
var item = _e[_d]; var item = _e[_d];
console.log(item);
}
;
for (var _f = 0, _g = unused.invalidFiles; _f < _g.length; _f++) {
var item = _g[_f];
plugins.beautylog.warn("Watch out: could not parse file " + item.red); plugins.beautylog.warn("Watch out: could not parse file " + item.red);
} }
; ;
for (var _h = 0, _j = unused.invalidDirs; _h < _j.length; _h++) { for (var _f = 0, _g = unused.invalidDirs; _f < _g.length; _f++) {
var item = _j[_h]; var item = _g[_f];
plugins.beautylog.warn("Watch out: could not parse directory " + item.red); plugins.beautylog.warn("Watch out: could not parse directory " + item.red);
} }
; ;
@ -93,11 +88,15 @@ var checkDevDependencies = function (configArg) {
plugins.beautylog.log("unused devDependency " + item.red); plugins.beautylog.log("unused devDependency " + item.red);
} }
; ;
for (var _b = 0, _c = unused.using; _b < _c.length; _b++) { for (var _b = 0, _c = unused.missing; _b < _c.length; _b++) {
var item = _c[_b]; var item = _c[_b];
console.log(item); plugins.beautylog.error("unused devDependency " + item.red);
} }
; ;
if (unused.missing.length > 0) {
plugins.beautylog.info("exiting due to missing dependencies in package.json");
process.exit(1);
}
for (var _d = 0, _e = unused.invalidFiles; _d < _e.length; _d++) { for (var _d = 0, _e = unused.invalidFiles; _d < _e.length; _d++) {
var item = _e[_d]; var item = _e[_d];
plugins.beautylog.warn("Watch out: could not parse file " + item.red); plugins.beautylog.warn("Watch out: could not parse file " + item.red);

View File

@ -8,12 +8,17 @@ exports.run = function (argvArg) {
npmts_promisechain_1.npmtsOra.text("looking for npmextra.json"); npmts_promisechain_1.npmtsOra.text("looking for npmextra.json");
var defaultConfig = { var defaultConfig = {
mode: "default", mode: "default",
notest: false notest: false,
nodocs: false
}; };
if (argvArg.notest) { if (argvArg.notest) {
defaultConfig.notest = true; defaultConfig.notest = true;
} }
; ;
if (argvArg.nodocs) {
defaultConfig.nodocs = true;
}
;
var config = plugins.npmextra.dataFor({ var config = plugins.npmextra.dataFor({
toolName: "npmts", toolName: "npmts",
defaultSettings: defaultConfig, defaultSettings: defaultConfig,

2
dist/npmts.tests.js vendored
View File

@ -25,7 +25,7 @@ var mocha = function (configArg) {
plugins.gulp.src([plugins.path.join(paths.cwd, "test/test.js")]) plugins.gulp.src([plugins.path.join(paths.cwd, "test/test.js")])
.pipe(plugins.g.babel({ .pipe(plugins.g.babel({
presets: [ presets: [
plugins.path.join(paths.npmtsPackageRoot, "node_modules/babel-preset-es2015/index.js") require.resolve("babel-preset-es2015")
] ]
})) }))
.pipe(plugins.g.injectModules()) .pipe(plugins.g.injectModules())

12
dist/npmts.typedoc.js vendored
View File

@ -27,9 +27,15 @@ var genTypeDoc = function (configArg) {
}; };
exports.run = function (configArg) { exports.run = function (configArg) {
var done = plugins.Q.defer(); var done = plugins.Q.defer();
genTypeDoc(configArg) if (configArg.nodocs) {
.then(function () {
done.resolve(configArg); done.resolve(configArg);
}); }
else {
genTypeDoc(configArg)
.then(function () {
done.resolve(configArg);
});
}
;
return done.promise; return done.promise;
}; };

View File

@ -1,18 +1,19 @@
{ {
"name": "npmts", "name": "npmts",
"version": "5.4.2", "version": "5.4.6",
"description": "Write npm modules with TypeScript without hassle. TypeScript ready. Fully ES6.", "description": "Write npm modules with TypeScript without hassle. TypeScript ready. Fully ES6.",
"main": "dist/index.js", "main": "dist/index.js",
"bin": { "bin": {
"npmts": "dist/cli.js" "npmts": "dist/cli.js"
}, },
"scripts": { "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/ )", "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/)", "setupCheck": "(git clone https://gitlab.com/sandboxzone/sandbox-npmts.git test/)",
"check": "(cd test && node ../dist/index.js)", "check": "(cd test && npm install && node ../dist/index.js)",
"checkVersion": "(cd test/ && node ../dist/index.js -v)", "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": { "repository": {
"type": "git", "type": "git",

View File

@ -52,9 +52,6 @@ let checkDependencies = (configArg) => {
plugins.beautylog.info("exiting due to missing dependencies in package.json"); plugins.beautylog.info("exiting due to missing dependencies in package.json");
process.exit(1); process.exit(1);
} }
for (let item of unused.using) {
console.log(item);
};
for (let item of unused.invalidFiles) { for (let item of unused.invalidFiles) {
plugins.beautylog.warn(`Watch out: could not parse file ${item.red}`); plugins.beautylog.warn(`Watch out: could not parse file ${item.red}`);
}; };
@ -83,9 +80,13 @@ let checkDevDependencies = (configArg) => {
for (let item of unused.devDependencies) { for (let item of unused.devDependencies) {
plugins.beautylog.log(`unused devDependency ${item.red}`); plugins.beautylog.log(`unused devDependency ${item.red}`);
}; };
for (let item of unused.using) { for (let item of unused.missing) {
console.log(item); plugins.beautylog.error(`unused devDependency ${item.red}`);
}; };
if (unused.missing.length > 0) {
plugins.beautylog.info("exiting due to missing dependencies in package.json");
process.exit(1);
}
for (let item of unused.invalidFiles) { for (let item of unused.invalidFiles) {
plugins.beautylog.warn(`Watch out: could not parse file ${item.red}`); plugins.beautylog.warn(`Watch out: could not parse file ${item.red}`);
}; };

View File

@ -7,11 +7,15 @@ export var run = function(argvArg){
npmtsOra.text("looking for npmextra.json"); npmtsOra.text("looking for npmextra.json");
let defaultConfig = { let defaultConfig = {
mode: "default", mode: "default",
notest:false notest:false,
nodocs:false
}; };
if(argvArg.notest){ if(argvArg.notest){
defaultConfig.notest = true; defaultConfig.notest = true;
}; };
if(argvArg.nodocs){
defaultConfig.nodocs = true;
};
let config = plugins.npmextra.dataFor({ let config = plugins.npmextra.dataFor({
toolName:"npmts", toolName:"npmts",
defaultSettings:defaultConfig, defaultSettings:defaultConfig,

View File

@ -26,7 +26,7 @@ let mocha = function (configArg) {
plugins.gulp.src([plugins.path.join(paths.cwd,"test/test.js")]) plugins.gulp.src([plugins.path.join(paths.cwd,"test/test.js")])
.pipe(plugins.g.babel({ .pipe(plugins.g.babel({
presets: [ presets: [
plugins.path.join(paths.npmtsPackageRoot,"node_modules/babel-preset-es2015/index.js") require.resolve("babel-preset-es2015")
] ]
})) }))
.pipe(plugins.g.injectModules()) .pipe(plugins.g.injectModules())

View File

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