Compare commits

...

8 Commits

Author SHA1 Message Date
6a650b9f1b 5.4.2 2016-07-28 03:56:13 +02:00
c76cc6baf7 fix unjust devDependency warning 2016-07-28 03:56:02 +02:00
659fa9ba95 5.4.1 2016-07-28 03:45:25 +02:00
97c47ed696 now checling for typings field in package.json 2016-07-28 03:45:14 +02:00
b69bd24cec 5.4.0 2016-07-28 03:11:26 +02:00
3317168d12 now supporting dependency checks 2016-07-28 03:10:51 +02:00
433fad502d 5.3.28 2016-07-27 16:09:24 +02:00
f583b05f73 now parsing compiler options correctly 2016-07-27 16:08:33 +02:00
14 changed files with 292 additions and 40 deletions

3
dist/npmts.check.d.ts vendored Normal file
View File

@ -0,0 +1,3 @@
/// <reference types="q" />
import * as plugins from "./npmts.plugins";
export declare let run: (configArg: any) => plugins.Q.Promise<{}>;

129
dist/npmts.check.js vendored Normal file
View File

@ -0,0 +1,129 @@
"use strict";
var plugins = require("./npmts.plugins");
var paths = require("./npmts.paths");
var npmts_promisechain_1 = require("./npmts.promisechain");
var checkProjectTypings = function (configArg) {
var done = plugins.Q.defer();
var cwdProjectInfo = new plugins.projectinfo.ProjectinfoNpm(paths.cwd);
if (typeof cwdProjectInfo.packageJson.typings == "undefined") {
plugins.beautylog.error("please add typings field to package.json");
process.exit(1);
}
;
done.resolve(configArg);
return done.promise;
};
var depcheckOptions = {
ignoreBinPackage: false,
parsers: {
'*.ts': plugins.depcheck.parser.typescript,
},
detectors: [
plugins.depcheck.detector.requireCallExpression,
plugins.depcheck.detector.importDeclaration
],
specials: [
plugins.depcheck.special.eslint,
plugins.depcheck.special.webpack
],
};
var checkDependencies = function (configArg) {
var done = plugins.Q.defer();
var depcheckOptionsMerged = plugins.lodashObject.merge(depcheckOptions, {
ignoreDirs: [
'test',
'dist',
'bower_components'
],
ignoreMatches: [
"@types/*",
"babel-preset-*"
]
});
plugins.depcheck(paths.cwd, depcheckOptionsMerged, function (unused) {
for (var _i = 0, _a = unused.dependencies; _i < _a.length; _i++) {
var item = _a[_i];
plugins.beautylog.warn("Watch out: unused dependency " + item.red);
}
;
for (var _b = 0, _c = unused.missing; _b < _c.length; _b++) {
var item = _c[_b];
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.using; _d < _e.length; _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);
}
;
for (var _h = 0, _j = unused.invalidDirs; _h < _j.length; _h++) {
var item = _j[_h];
plugins.beautylog.warn("Watch out: could not parse directory " + item.red);
}
;
done.resolve(configArg);
});
return done.promise;
};
var checkDevDependencies = function (configArg) {
var done = plugins.Q.defer();
var depcheckOptionsMerged = plugins.lodashObject.merge(depcheckOptions, {
ignoreDirs: [
'ts',
'dist',
'bower_components'
],
ignoreMatches: [
"@types/*",
"babel-preset-*"
]
});
plugins.depcheck(paths.cwd, depcheckOptionsMerged, function (unused) {
for (var _i = 0, _a = unused.devDependencies; _i < _a.length; _i++) {
var item = _a[_i];
plugins.beautylog.log("unused devDependency " + item.red);
}
;
for (var _b = 0, _c = unused.using; _b < _c.length; _b++) {
var item = _c[_b];
console.log(item);
}
;
for (var _d = 0, _e = unused.invalidFiles; _d < _e.length; _d++) {
var item = _e[_d];
plugins.beautylog.warn("Watch out: could not parse file " + item.red);
}
;
for (var _f = 0, _g = unused.invalidDirs; _f < _g.length; _f++) {
var item = _g[_f];
plugins.beautylog.warn("Watch out: could not parse directory " + item.red);
}
;
done.resolve(configArg);
});
return done.promise;
};
var checkNodeVersion = function (configArg) {
var done = plugins.Q.defer();
done.resolve(configArg);
return done.promise;
};
exports.run = function (configArg) {
var done = plugins.Q.defer();
npmts_promisechain_1.npmtsOra.text("running project checks..."),
checkProjectTypings(configArg)
.then(checkDependencies)
.then(checkDevDependencies)
.then(checkNodeVersion)
.then(done.resolve);
return done.promise;
};

18
dist/npmts.compile.js vendored
View File

@ -7,16 +7,22 @@ var promiseArray = [];
var compileTs = function (tsFileArrayArg, tsOptionsArg) { var compileTs = function (tsFileArrayArg, tsOptionsArg) {
if (tsOptionsArg === void 0) { tsOptionsArg = {}; } if (tsOptionsArg === void 0) { tsOptionsArg = {}; }
var done = plugins.Q.defer(); var done = plugins.Q.defer();
var tsOptionsDefault = { var compilerOptionsDefault = {
declaration: true, declaration: true,
target: "ES6", module: "CommonJS",
module: "commonjs" target: "ES6"
}; };
/** /**
* merges default ts options with those found in npmts.json * merges default ts options with those found in npmts.json
*/ */
var tsOptions = function (keyArg) { var compilerOptions = function (keyArg) {
return plugins.lodashObject.assign(tsOptionsDefault, tsOptionsArg); var tsOptionsCombined = plugins.lodashObject.merge(compilerOptionsDefault, tsOptionsArg);
var compilerOptions = {
declaration: tsOptionsCombined.declaration,
module: plugins.tsn.ModuleKind[tsOptionsCombined.module],
target: plugins.tsn.ScriptTarget[tsOptionsCombined.target]
};
return compilerOptions;
}; };
var _loop_1 = function(keyArg) { var _loop_1 = function(keyArg) {
plugins.beautylog.info("TypeScript assignment: transpile from " + keyArg.blue + " to " + tsFileArrayArg[keyArg].blue); plugins.beautylog.info("TypeScript assignment: transpile from " + keyArg.blue + " to " + tsFileArrayArg[keyArg].blue);
@ -25,7 +31,7 @@ var compileTs = function (tsFileArrayArg, tsOptionsArg) {
.then(function (filesToConvertArg) { .then(function (filesToConvertArg) {
var filesToConvertAbsolute = plugins.smartpath.transform.toAbsolute(filesToConvertArg, process.cwd()); var filesToConvertAbsolute = plugins.smartpath.transform.toAbsolute(filesToConvertArg, process.cwd());
var destDir = plugins.smartpath.transform.toAbsolute(tsFileArrayArg[keyArg], process.cwd()); var destDir = plugins.smartpath.transform.toAbsolute(tsFileArrayArg[keyArg], process.cwd());
var filesCompiledPromise = plugins.tsn.compile(filesToConvertAbsolute, destDir); var filesCompiledPromise = plugins.tsn.compile(filesToConvertAbsolute, destDir, compilerOptions(keyArg));
promiseArray.push(filesCompiledPromise); promiseArray.push(filesCompiledPromise);
}); });
promiseArray.push(filesReadPromise); promiseArray.push(filesReadPromise);

View File

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

View File

@ -2,9 +2,6 @@
require("typings-global"); require("typings-global");
var plugins = require("./npmts.plugins"); var plugins = require("./npmts.plugins");
var npmts_promisechain_1 = require("./npmts.promisechain"); var npmts_promisechain_1 = require("./npmts.promisechain");
exports.isCi = function () {
return plugins.smartci.check.isCi();
};
exports.run = function (configArg) { exports.run = function (configArg) {
var done = plugins.Q.defer(); var done = plugins.Q.defer();
var config = configArg; var config = configArg;

View File

@ -1,23 +1,22 @@
import "typings-global"; import "typings-global";
export import beautylog = require("beautylog"); export import beautylog = require("beautylog");
export declare let gulp: any; export declare let depcheck: any;
export import gulp = require("gulp");
export declare let g: { export declare let g: {
babel: any; babel: any;
istanbul: any; istanbul: any;
gFunction: any; gFunction: any;
injectModules: any; injectModules: any;
mocha: any; mocha: any;
replace: any;
sourcemaps: any; sourcemaps: any;
typedoc: any; typedoc: any;
}; };
export declare let lodashObject: any; export import lodashObject = require('lodash');
export import npmextra = require("npmextra"); export import npmextra = require("npmextra");
export import projectinfo = require("projectinfo"); export import projectinfo = require("projectinfo");
export import path = require("path"); export import path = require("path");
export import Q = require("q"); export import Q = require("q");
export import shelljs = require("shelljs"); export import shelljs = require("shelljs");
export declare let smartci: any;
export import smartcli = require("smartcli"); export import smartcli = require("smartcli");
export import smartcov = require("smartcov"); export import smartcov = require("smartcov");
export import smartenv = require("smartenv"); export import smartenv = require("smartenv");

View File

@ -1,6 +1,7 @@
"use strict"; "use strict";
require("typings-global"); require("typings-global");
exports.beautylog = require("beautylog"); exports.beautylog = require("beautylog");
exports.depcheck = require("depcheck");
exports.gulp = require("gulp"); exports.gulp = require("gulp");
exports.g = { exports.g = {
babel: require("gulp-babel"), babel: require("gulp-babel"),
@ -8,17 +9,15 @@ exports.g = {
gFunction: require("gulp-function"), gFunction: require("gulp-function"),
injectModules: require("gulp-inject-modules"), injectModules: require("gulp-inject-modules"),
mocha: require("gulp-mocha"), mocha: require("gulp-mocha"),
replace: require("gulp-replace"),
sourcemaps: require("gulp-sourcemaps"), sourcemaps: require("gulp-sourcemaps"),
typedoc: require("gulp-typedoc") typedoc: require("gulp-typedoc")
}; };
exports.lodashObject = require('lodash/fp/object'); exports.lodashObject = require('lodash');
exports.npmextra = require("npmextra"); exports.npmextra = require("npmextra");
exports.projectinfo = require("projectinfo"); exports.projectinfo = require("projectinfo");
exports.path = require("path"); exports.path = require("path");
exports.Q = require("q"); exports.Q = require("q");
exports.shelljs = require("shelljs"); exports.shelljs = require("shelljs");
exports.smartci = require("smartci");
exports.smartcli = require("smartcli"); exports.smartcli = require("smartcli");
exports.smartcov = require("smartcov"); exports.smartcov = require("smartcov");
exports.smartenv = require("smartenv"); exports.smartenv = require("smartenv");

View File

@ -3,6 +3,7 @@ require("typings-global");
var plugins = require("./npmts.plugins"); var plugins = require("./npmts.plugins");
exports.npmtsOra = new plugins.beautylog.Ora("setting up TaskChain", "cyan"); exports.npmtsOra = new plugins.beautylog.Ora("setting up TaskChain", "cyan");
var NpmtsAssets = require("./npmts.assets"); var NpmtsAssets = require("./npmts.assets");
var NpmtsCheck = require("./npmts.check");
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");
@ -15,6 +16,7 @@ exports.promisechain = function (argvArg) {
NpmtsConfigFile.run(argvArg) NpmtsConfigFile.run(argvArg)
.then(NpmtsOptions.run) .then(NpmtsOptions.run)
.then(NpmtsClean.run) .then(NpmtsClean.run)
.then(NpmtsCheck.run)
.then(NpmtsCompile.run) .then(NpmtsCompile.run)
.then(NpmtsAssets.run) .then(NpmtsAssets.run)
.then(NpmtsTypeDoc.run) .then(NpmtsTypeDoc.run)

View File

@ -1,6 +1,6 @@
{ {
"name": "npmts", "name": "npmts",
"version": "5.3.27", "version": "5.4.2",
"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": {
@ -29,29 +29,27 @@
}, },
"homepage": "https://gitlab.com/pushrocks/npmts#readme", "homepage": "https://gitlab.com/pushrocks/npmts#readme",
"dependencies": { "dependencies": {
"@types/gulp": "^3.8.28",
"@types/minimatch": "^2.0.28", "@types/minimatch": "^2.0.28",
"@types/q": "^0.0.27", "@types/q": "^0.0.27",
"@types/shelljs": "^0.3.27", "@types/shelljs": "^0.3.27",
"babel-preset-es2015": "^6.9.0", "babel-preset-es2015": "^6.9.0",
"beautylog": "5.0.14", "beautylog": "5.0.18",
"depcheck": "^0.6.4",
"early": "^2.0.13", "early": "^2.0.13",
"gulp": "3.9.1", "gulp": "3.9.1",
"gulp-babel": "^6.1.2", "gulp-babel": "^6.1.2",
"gulp-concat": "^2.6.0",
"gulp-function": "^1.3.6", "gulp-function": "^1.3.6",
"gulp-if": "^2.0.1",
"gulp-inject-modules": "^1.0.0", "gulp-inject-modules": "^1.0.0",
"gulp-istanbul": "^1.0.0", "gulp-istanbul": "^1.0.0",
"gulp-mocha": "^2.2.0", "gulp-mocha": "^2.2.0",
"gulp-replace": "^0.5.4",
"gulp-sourcemaps": "^1.6.0", "gulp-sourcemaps": "^1.6.0",
"gulp-typedoc": "^2.0.0", "gulp-typedoc": "^2.0.0",
"lodash": "^4.13.1", "lodash": "^4.14.0",
"npmextra": "^1.0.8", "npmextra": "^1.0.8",
"projectinfo": "1.0.3", "projectinfo": "1.0.3",
"q": "^1.4.1", "q": "^1.4.1",
"shelljs": "^0.7.1", "shelljs": "^0.7.3",
"smartci": "0.0.1",
"smartcli": "1.0.4", "smartcli": "1.0.4",
"smartcov": "0.0.9", "smartcov": "0.0.9",
"smartenv": "1.2.5", "smartenv": "1.2.5",
@ -59,7 +57,7 @@
"smartpath": "3.2.2", "smartpath": "3.2.2",
"smartstring": "^2.0.15", "smartstring": "^2.0.15",
"source-map-support": "^0.4.2", "source-map-support": "^0.4.2",
"tsn": "^1.0.7", "tsn": "^1.0.10",
"typedoc": "^0.4.4", "typedoc": "^0.4.4",
"typescript": "^2.0.0-dev.20160630", "typescript": "^2.0.0-dev.20160630",
"typings-global": "*" "typings-global": "*"

116
ts/npmts.check.ts Normal file
View File

@ -0,0 +1,116 @@
import * as plugins from "./npmts.plugins";
import * as paths from "./npmts.paths";
import { npmtsOra } from "./npmts.promisechain";
let checkProjectTypings = (configArg) => {
let done = plugins.Q.defer();
let cwdProjectInfo = new plugins.projectinfo.ProjectinfoNpm(paths.cwd);
if(typeof cwdProjectInfo.packageJson.typings == "undefined"){
plugins.beautylog.error(`please add typings field to package.json`);
process.exit(1);
};
done.resolve(configArg);
return done.promise;
};
const depcheckOptions = {
ignoreBinPackage: false, // ignore the packages with bin entry
parsers: { // the target parsers
'*.ts': plugins.depcheck.parser.typescript,
},
detectors: [ // the target detectors
plugins.depcheck.detector.requireCallExpression,
plugins.depcheck.detector.importDeclaration
],
specials: [ // the target special parsers
plugins.depcheck.special.eslint,
plugins.depcheck.special.webpack
],
};
let checkDependencies = (configArg) => {
let done = plugins.Q.defer();
let depcheckOptionsMerged = plugins.lodashObject.merge(depcheckOptions, {
ignoreDirs: [ // folder with these names will be ignored
'test',
'dist',
'bower_components'
],
ignoreMatches: [ // ignore dependencies that matches these globs
"@types/*",
"babel-preset-*"
]
})
plugins.depcheck(paths.cwd, depcheckOptionsMerged, (unused) => {
for (let item of unused.dependencies) {
plugins.beautylog.warn(`Watch out: unused dependency ${item.red}`);
};
for (let item of unused.missing) {
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.using) {
console.log(item);
};
for (let item of unused.invalidFiles) {
plugins.beautylog.warn(`Watch out: could not parse file ${item.red}`);
};
for (let item of unused.invalidDirs) {
plugins.beautylog.warn(`Watch out: could not parse directory ${item.red}`);
};
done.resolve(configArg);
});
return done.promise;
};
let checkDevDependencies = (configArg) => {
let done = plugins.Q.defer();
let depcheckOptionsMerged = plugins.lodashObject.merge(depcheckOptions, {
ignoreDirs: [ // folder with these names will be ignored
'ts',
'dist',
'bower_components'
],
ignoreMatches: [ // ignore dependencies that matches these globs
"@types/*",
"babel-preset-*"
]
})
plugins.depcheck(paths.cwd, depcheckOptionsMerged, (unused) => {
for (let item of unused.devDependencies) {
plugins.beautylog.log(`unused devDependency ${item.red}`);
};
for (let item of unused.using) {
console.log(item);
};
for (let item of unused.invalidFiles) {
plugins.beautylog.warn(`Watch out: could not parse file ${item.red}`);
};
for (let item of unused.invalidDirs) {
plugins.beautylog.warn(`Watch out: could not parse directory ${item.red}`);
};
done.resolve(configArg);
});
return done.promise;
};
let checkNodeVersion = (configArg) => {
let done = plugins.Q.defer();
done.resolve(configArg);
return done.promise;
}
export let run = (configArg) => {
let done = plugins.Q.defer();
npmtsOra.text("running project checks..."),
checkProjectTypings(configArg)
.then(checkDependencies)
.then(checkDevDependencies)
.then(checkNodeVersion)
.then(done.resolve);
return done.promise;
}

View File

@ -8,17 +8,23 @@ let promiseArray = [];
let compileTs = (tsFileArrayArg:string[],tsOptionsArg = {}) => { let compileTs = (tsFileArrayArg:string[],tsOptionsArg = {}) => {
let done = plugins.Q.defer(); let done = plugins.Q.defer();
let tsOptionsDefault = { let compilerOptionsDefault = {
declaration: true, declaration: true,
target: "ES6", module: "CommonJS",
module: "commonjs" target: "ES6"
}; };
/** /**
* merges default ts options with those found in npmts.json * merges default ts options with those found in npmts.json
*/ */
let tsOptions = function (keyArg:string) { let compilerOptions = function (keyArg:string) {
return plugins.lodashObject.assign(tsOptionsDefault, tsOptionsArg) let tsOptionsCombined = plugins.lodashObject.merge(compilerOptionsDefault, tsOptionsArg);
let compilerOptions:plugins.tsn.CompilerOptions = {
declaration: tsOptionsCombined.declaration,
module: plugins.tsn.ModuleKind[tsOptionsCombined.module],
target: plugins.tsn.ScriptTarget[tsOptionsCombined.target]
};
return compilerOptions;
}; };
for (let keyArg in tsFileArrayArg) { for (let keyArg in tsFileArrayArg) {
plugins.beautylog.info(`TypeScript assignment: transpile from ${keyArg.blue} to ${tsFileArrayArg[keyArg].blue}`); plugins.beautylog.info(`TypeScript assignment: transpile from ${keyArg.blue} to ${tsFileArrayArg[keyArg].blue}`);
@ -29,7 +35,8 @@ let compileTs = (tsFileArrayArg:string[],tsOptionsArg = {}) => {
let destDir = plugins.smartpath.transform.toAbsolute(tsFileArrayArg[keyArg],process.cwd()); let destDir = plugins.smartpath.transform.toAbsolute(tsFileArrayArg[keyArg],process.cwd());
let filesCompiledPromise = plugins.tsn.compile( let filesCompiledPromise = plugins.tsn.compile(
filesToConvertAbsolute, filesToConvertAbsolute,
destDir destDir,
compilerOptions(keyArg)
); );
promiseArray.push(filesCompiledPromise); promiseArray.push(filesCompiledPromise);
}); });

View File

@ -2,10 +2,6 @@ import "typings-global";
import plugins = require("./npmts.plugins"); import plugins = require("./npmts.plugins");
import {npmtsOra} from "./npmts.promisechain"; import {npmtsOra} from "./npmts.promisechain";
export let isCi = function(){
return plugins.smartci.check.isCi();
};
export var run = function(configArg){ export var run = function(configArg){
var done = plugins.Q.defer(); var done = plugins.Q.defer();
var config = configArg; var config = configArg;

View File

@ -1,23 +1,22 @@
import "typings-global"; import "typings-global";
export import beautylog = require("beautylog"); export import beautylog = require("beautylog");
export let gulp = require("gulp"); export let depcheck = require("depcheck");
export import gulp = require("gulp");
export let g = { export let g = {
babel: require("gulp-babel"), babel: require("gulp-babel"),
istanbul: require("gulp-istanbul"), istanbul: require("gulp-istanbul"),
gFunction: require("gulp-function"), gFunction: require("gulp-function"),
injectModules: require("gulp-inject-modules"), injectModules: require("gulp-inject-modules"),
mocha: require("gulp-mocha"), mocha: require("gulp-mocha"),
replace: require("gulp-replace"),
sourcemaps: require("gulp-sourcemaps"), sourcemaps: require("gulp-sourcemaps"),
typedoc: require("gulp-typedoc") typedoc: require("gulp-typedoc")
}; };
export let lodashObject = require('lodash/fp/object'); export import lodashObject = require('lodash');
export import npmextra = require("npmextra"); export import npmextra = require("npmextra");
export import projectinfo = require("projectinfo"); export import projectinfo = require("projectinfo");
export import path = require("path"); export import path = require("path");
export import Q = require("q"); export import Q = require("q");
export import shelljs = require("shelljs"); export import shelljs = require("shelljs");
export let smartci = require("smartci");
export import smartcli = require("smartcli"); export import smartcli = require("smartcli");
export import smartcov = require("smartcov"); export import smartcov = require("smartcov");
export import smartenv = require("smartenv"); export import smartenv = require("smartenv");

View File

@ -5,6 +5,7 @@ import {Ora} from "beautylog"
export let npmtsOra = new plugins.beautylog.Ora("setting up TaskChain","cyan"); export let npmtsOra = new plugins.beautylog.Ora("setting up TaskChain","cyan");
import NpmtsAssets = require("./npmts.assets"); import NpmtsAssets = require("./npmts.assets");
import NpmtsCheck = require("./npmts.check");
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");
@ -18,6 +19,7 @@ export let promisechain = function(argvArg){
NpmtsConfigFile.run(argvArg) NpmtsConfigFile.run(argvArg)
.then(NpmtsOptions.run) .then(NpmtsOptions.run)
.then(NpmtsClean.run) .then(NpmtsClean.run)
.then(NpmtsCheck.run)
.then(NpmtsCompile.run) .then(NpmtsCompile.run)
.then(NpmtsAssets.run) .then(NpmtsAssets.run)
.then(NpmtsTypeDoc.run) .then(NpmtsTypeDoc.run)