diff --git a/dist/npmts.check.d.ts b/dist/npmts.check.d.ts
new file mode 100644
index 0000000..fc80a6d
--- /dev/null
+++ b/dist/npmts.check.d.ts
@@ -0,0 +1,3 @@
+///
+import * as plugins from "./npmts.plugins";
+export declare let run: (configArg: any) => plugins.Q.Promise<{}>;
diff --git a/dist/npmts.check.js b/dist/npmts.check.js
new file mode 100644
index 0000000..19643c2
--- /dev/null
+++ b/dist/npmts.check.js
@@ -0,0 +1,87 @@
+"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();
+ done.resolve(configArg);
+ return done.promise;
+};
+var checkDependencies = function (configArg) {
+ var done = plugins.Q.defer();
+ var options = {
+ ignoreBinPackage: false,
+ ignoreDirs: [
+ 'test',
+ 'dist',
+ 'bower_components'
+ ],
+ ignoreMatches: [
+ "@types/*",
+ "babel-preset-*"
+ ],
+ parsers: {
+ '*.ts': plugins.depcheck.parser.typescript,
+ },
+ detectors: [
+ plugins.depcheck.detector.requireCallExpression,
+ plugins.depcheck.detector.importDeclaration
+ ],
+ specials: [
+ plugins.depcheck.special.eslint,
+ plugins.depcheck.special.webpack
+ ],
+ };
+ plugins.depcheck(paths.cwd, options, 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.devDependencies; _b < _c.length; _b++) {
+ var item = _c[_b];
+ plugins.beautylog.log("unused devDependency " + item.red);
+ }
+ ;
+ for (var _d = 0, _e = unused.missing; _d < _e.length; _d++) {
+ var item = _e[_d];
+ 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 _f = 0, _g = unused.using; _f < _g.length; _f++) {
+ var item = _g[_f];
+ console.log(item);
+ }
+ ;
+ for (var _h = 0, _j = unused.invalidFiles; _h < _j.length; _h++) {
+ var item = _j[_h];
+ plugins.beautylog.warn("Watch out: could not parse file " + item.red);
+ }
+ ;
+ for (var _k = 0, _l = unused.invalidDirs; _k < _l.length; _k++) {
+ var item = _l[_k];
+ 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(checkNodeVersion)
+ .then(done.resolve);
+ return done.promise;
+};
diff --git a/dist/npmts.options.d.ts b/dist/npmts.options.d.ts
index c5fdcc7..f32981b 100644
--- a/dist/npmts.options.d.ts
+++ b/dist/npmts.options.d.ts
@@ -1,5 +1,4 @@
///
import "typings-global";
import plugins = require("./npmts.plugins");
-export declare let isCi: () => any;
export declare var run: (configArg: any) => plugins.Q.Promise<{}>;
diff --git a/dist/npmts.options.js b/dist/npmts.options.js
index 57e0825..cd76c82 100644
--- a/dist/npmts.options.js
+++ b/dist/npmts.options.js
@@ -2,9 +2,6 @@
require("typings-global");
var plugins = require("./npmts.plugins");
var npmts_promisechain_1 = require("./npmts.promisechain");
-exports.isCi = function () {
- return plugins.smartci.check.isCi();
-};
exports.run = function (configArg) {
var done = plugins.Q.defer();
var config = configArg;
diff --git a/dist/npmts.plugins.d.ts b/dist/npmts.plugins.d.ts
index 1405048..111f125 100644
--- a/dist/npmts.plugins.d.ts
+++ b/dist/npmts.plugins.d.ts
@@ -1,13 +1,13 @@
import "typings-global";
export import beautylog = require("beautylog");
-export declare let gulp: any;
+export declare let depcheck: any;
+export import gulp = require("gulp");
export declare let g: {
babel: any;
istanbul: any;
gFunction: any;
injectModules: any;
mocha: any;
- replace: any;
sourcemaps: any;
typedoc: any;
};
@@ -17,7 +17,6 @@ export import projectinfo = require("projectinfo");
export import path = require("path");
export import Q = require("q");
export import shelljs = require("shelljs");
-export declare let smartci: any;
export import smartcli = require("smartcli");
export import smartcov = require("smartcov");
export import smartenv = require("smartenv");
diff --git a/dist/npmts.plugins.js b/dist/npmts.plugins.js
index 76da322..8a5a09b 100644
--- a/dist/npmts.plugins.js
+++ b/dist/npmts.plugins.js
@@ -1,6 +1,7 @@
"use strict";
require("typings-global");
exports.beautylog = require("beautylog");
+exports.depcheck = require("depcheck");
exports.gulp = require("gulp");
exports.g = {
babel: require("gulp-babel"),
@@ -8,7 +9,6 @@ exports.g = {
gFunction: require("gulp-function"),
injectModules: require("gulp-inject-modules"),
mocha: require("gulp-mocha"),
- replace: require("gulp-replace"),
sourcemaps: require("gulp-sourcemaps"),
typedoc: require("gulp-typedoc")
};
@@ -18,7 +18,6 @@ exports.projectinfo = require("projectinfo");
exports.path = require("path");
exports.Q = require("q");
exports.shelljs = require("shelljs");
-exports.smartci = require("smartci");
exports.smartcli = require("smartcli");
exports.smartcov = require("smartcov");
exports.smartenv = require("smartenv");
diff --git a/dist/npmts.promisechain.js b/dist/npmts.promisechain.js
index 0b713a2..f282452 100644
--- a/dist/npmts.promisechain.js
+++ b/dist/npmts.promisechain.js
@@ -3,6 +3,7 @@ require("typings-global");
var plugins = require("./npmts.plugins");
exports.npmtsOra = new plugins.beautylog.Ora("setting up TaskChain", "cyan");
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");
@@ -15,6 +16,7 @@ exports.promisechain = function (argvArg) {
NpmtsConfigFile.run(argvArg)
.then(NpmtsOptions.run)
.then(NpmtsClean.run)
+ .then(NpmtsCheck.run)
.then(NpmtsCompile.run)
.then(NpmtsAssets.run)
.then(NpmtsTypeDoc.run)
diff --git a/package.json b/package.json
index 1affb49..94f4060 100644
--- a/package.json
+++ b/package.json
@@ -29,29 +29,27 @@
},
"homepage": "https://gitlab.com/pushrocks/npmts#readme",
"dependencies": {
+ "@types/gulp": "^3.8.28",
"@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",
+ "depcheck": "^0.6.4",
"early": "^2.0.13",
"gulp": "3.9.1",
"gulp-babel": "^6.1.2",
- "gulp-concat": "^2.6.0",
"gulp-function": "^1.3.6",
- "gulp-if": "^2.0.1",
"gulp-inject-modules": "^1.0.0",
"gulp-istanbul": "^1.0.0",
"gulp-mocha": "^2.2.0",
- "gulp-replace": "^0.5.4",
"gulp-sourcemaps": "^1.6.0",
"gulp-typedoc": "^2.0.0",
"lodash": "^4.14.0",
"npmextra": "^1.0.8",
"projectinfo": "1.0.3",
"q": "^1.4.1",
- "shelljs": "^0.7.2",
- "smartci": "0.0.1",
+ "shelljs": "^0.7.3",
"smartcli": "1.0.4",
"smartcov": "0.0.9",
"smartenv": "1.2.5",
@@ -59,7 +57,7 @@
"smartpath": "3.2.2",
"smartstring": "^2.0.15",
"source-map-support": "^0.4.2",
- "tsn": "^1.0.9",
+ "tsn": "^1.0.10",
"typedoc": "^0.4.4",
"typescript": "^2.0.0-dev.20160630",
"typings-global": "*"
diff --git a/ts/npmts.check.ts b/ts/npmts.check.ts
new file mode 100644
index 0000000..140e069
--- /dev/null
+++ b/ts/npmts.check.ts
@@ -0,0 +1,81 @@
+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();
+
+ done.resolve(configArg);
+ return done.promise;
+};
+
+let checkDependencies = (configArg) => {
+ let done = plugins.Q.defer();
+ const options = {
+ ignoreBinPackage: false, // ignore the packages with bin entry
+ ignoreDirs: [ // folder with these names will be ignored
+ 'test',
+ 'dist',
+ 'bower_components'
+ ],
+ ignoreMatches: [ // ignore dependencies that matches these globs
+ "@types/*",
+ "babel-preset-*"
+ ],
+ 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
+ ],
+ };
+
+ plugins.depcheck(paths.cwd, options, (unused) => {
+ for (let item of unused.dependencies){
+ plugins.beautylog.warn(`Watch out: unused dependency ${item.red}`);
+ };
+ for (let item of unused.devDependencies){
+ plugins.beautylog.log(`unused devDependency ${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 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(checkNodeVersion)
+ .then(done.resolve);
+ return done.promise;
+}
diff --git a/ts/npmts.options.ts b/ts/npmts.options.ts
index dfa87d2..d7e65a2 100644
--- a/ts/npmts.options.ts
+++ b/ts/npmts.options.ts
@@ -2,10 +2,6 @@ import "typings-global";
import plugins = require("./npmts.plugins");
import {npmtsOra} from "./npmts.promisechain";
-export let isCi = function(){
- return plugins.smartci.check.isCi();
-};
-
export var run = function(configArg){
var done = plugins.Q.defer();
var config = configArg;
diff --git a/ts/npmts.plugins.ts b/ts/npmts.plugins.ts
index 2e58e42..3156d78 100644
--- a/ts/npmts.plugins.ts
+++ b/ts/npmts.plugins.ts
@@ -1,13 +1,13 @@
import "typings-global";
export import beautylog = require("beautylog");
-export let gulp = require("gulp");
+export let depcheck = require("depcheck");
+export import gulp = require("gulp");
export let g = {
babel: require("gulp-babel"),
istanbul: require("gulp-istanbul"),
gFunction: require("gulp-function"),
injectModules: require("gulp-inject-modules"),
mocha: require("gulp-mocha"),
- replace: require("gulp-replace"),
sourcemaps: require("gulp-sourcemaps"),
typedoc: require("gulp-typedoc")
};
@@ -17,7 +17,6 @@ export import projectinfo = require("projectinfo");
export import path = require("path");
export import Q = require("q");
export import shelljs = require("shelljs");
-export let smartci = require("smartci");
export import smartcli = require("smartcli");
export import smartcov = require("smartcov");
export import smartenv = require("smartenv");
diff --git a/ts/npmts.promisechain.ts b/ts/npmts.promisechain.ts
index 7023e0c..f73c4ee 100644
--- a/ts/npmts.promisechain.ts
+++ b/ts/npmts.promisechain.ts
@@ -5,6 +5,7 @@ import {Ora} from "beautylog"
export let npmtsOra = new plugins.beautylog.Ora("setting up TaskChain","cyan");
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");
@@ -18,6 +19,7 @@ export let promisechain = function(argvArg){
NpmtsConfigFile.run(argvArg)
.then(NpmtsOptions.run)
.then(NpmtsClean.run)
+ .then(NpmtsCheck.run)
.then(NpmtsCompile.run)
.then(NpmtsAssets.run)
.then(NpmtsTypeDoc.run)