diff --git a/package.json b/package.json
index 0acd485f21..bad7f21b76 100755
--- a/package.json
+++ b/package.json
@@ -4,6 +4,7 @@
"devDependencies": {
"assert": "~1.3.0",
"babel-eslint": "^6.1.2",
+ "chalk": "^2.4.1",
"eslint": "^3.12.2",
"eslint-plugin-babel": "^4.0.0",
"eslint-plugin-react": "^6.8.0",
diff --git a/packages/strapi-admin/admin/src/containers/AdminPage/index.js b/packages/strapi-admin/admin/src/containers/AdminPage/index.js
index 7248d239dc..7ef19f3aae 100644
--- a/packages/strapi-admin/admin/src/containers/AdminPage/index.js
+++ b/packages/strapi-admin/admin/src/containers/AdminPage/index.js
@@ -156,8 +156,7 @@ export class AdminPage extends React.Component { // eslint-disable-line react/pr
const { adminPage } = this.props;
const header = this.showLeftMenu() ? : '';
const style = this.showLeftMenu() ? {} : { width: '100%' };
- const c = '';
-
+
return (
{this.showLeftMenu() && (
diff --git a/packages/strapi-admin/package.json b/packages/strapi-admin/package.json
index 13cb00b7df..e7d5510e3e 100755
--- a/packages/strapi-admin/package.json
+++ b/packages/strapi-admin/package.json
@@ -18,10 +18,8 @@
"prestart": "node ./node_modules/strapi-helper-plugin/node_modules/.bin/cross-env NODE_ENV=development PORT=4000 IS_ADMIN=true node ./node_modules/strapi-helper-plugin/lib/internals/scripts/loadAdminConfigurations.js",
"start": "node ./node_modules/strapi-helper-plugin/node_modules/.bin/cross-env NODE_ENV=development PORT=4000 IS_ADMIN=true node ./node_modules/strapi-helper-plugin/lib/server",
"generate": "node ./node_modules/strapi-helper-plugin/node_modules/.bin/plop --plopfile ./node_modules/strapi-helper-plugin/lib/internals/generators/index.js",
- "lint:front": "node ./node_modules/strapi-lint/node_modules/.bin/eslint --ignore-path .gitignore --ignore-pattern '/admin/build/' --config ./node_modules/strapi-lint/lib/internals/eslint/front/.eslintrc.json admin",
- "lint:back": "node ./node_modules/strapi-lint/node_modules/.bin/eslint --ignore-path .gitignore --ignore-pattern '/admin/build/' --config ./node_modules/strapi-lint/lib/internals/eslint/back/.eslintrc.json controllers config services",
"prettier": "node ./node_modules/strapi-helper-plugin/node_modules/.bin/prettier --single-quote --trailing-comma es5 --write \"{admin,__{tests,mocks}__}/**/*.js\"",
- "test": "npm run lint:front && npm run lint:back",
+ "test": "echo \"Error: no test specified\"",
"prepublishOnly": "npm run build",
"setup": "node ./scripts/setup.js",
"presetup": "node ./scripts/preSetup.js"
@@ -53,4 +51,4 @@
"npm": ">= 5.0.0"
},
"license": "MIT"
-}
\ No newline at end of file
+}
diff --git a/packages/strapi-lint/lib/internals/eslint/back/.eslintrc.json b/packages/strapi-lint/lib/internals/eslint/back/.eslintrc.json
index ee0953f3a0..a196c9073e 100644
--- a/packages/strapi-lint/lib/internals/eslint/back/.eslintrc.json
+++ b/packages/strapi-lint/lib/internals/eslint/back/.eslintrc.json
@@ -68,7 +68,7 @@
"settings": {
"import/resolver": {
"webpack": {
- "config": "node_modules/strapi-lint/lib/internals/webpack/webpack.test.babel.js"
+ "config": "../../node_modules/strapi-lint/lib/internals/webpack/webpack.test.babel.js"
}
}
}
diff --git a/packages/strapi-lint/lib/internals/eslint/front/.eslintrc.json b/packages/strapi-lint/lib/internals/eslint/front/.eslintrc.json
index eca3964876..5bb805a888 100644
--- a/packages/strapi-lint/lib/internals/eslint/front/.eslintrc.json
+++ b/packages/strapi-lint/lib/internals/eslint/front/.eslintrc.json
@@ -106,7 +106,7 @@
"settings": {
"import/resolver": {
"webpack": {
- "config": "node_modules/strapi-lint/lib/internals/webpack/webpack.test.babel.js"
+ "config": "../../node_modules/strapi-lint/lib/internals/webpack/webpack.test.babel.js"
}
}
}
diff --git a/scripts/eslintErrorsFormatter.js b/scripts/eslintErrorsFormatter.js
new file mode 100644
index 0000000000..80d0c272b5
--- /dev/null
+++ b/scripts/eslintErrorsFormatter.js
@@ -0,0 +1,57 @@
+const chalk = require('chalk');
+const blue = chalk.blue;
+const yellow = chalk.yellow;
+const green = chalk.green;
+const red = chalk.red;
+const magenta = chalk.magenta;
+
+const eslintErrorsFormatter = data => {
+ const errors = data.split('\n\n');
+
+ const formattedErrors = errors.reduce((acc, curr, i) => {
+ if (curr.includes('warnings)') || curr.includes('warning)')) {
+ const summaryErrorArray = curr.split(' ');
+ const summaryError = `${red(summaryErrorArray[0])} ${green(
+ `${summaryErrorArray[1]} ${summaryErrorArray[2]}`,
+ )} ${summaryErrorArray.slice(3).join(' ')}`;
+
+ acc.push(summaryError);
+ } else {
+ const err = curr.split('\n').reduce((acc, c) => {
+ const error = c
+ .split(' ')
+ .reduce((acc, current, index) => {
+ let formattedError;
+
+ switch (index) {
+ case 0:
+ formattedError = blue(current);
+ break;
+ case 4:
+ formattedError = current === 'warning' ? green(current) : red(current);
+ break;
+ case c.split(' ').length - 1:
+ formattedError = yellow(current);
+ break;
+ default:
+ formattedError = current;
+ }
+
+ acc.push(formattedError);
+ return acc;
+ }, [])
+ .join(' ');
+ acc.push(error);
+ return acc;
+ }, []);
+
+ acc.push(err.join('\n'));
+ }
+
+ return acc;
+ }, []);
+
+ return formattedErrors.join('\n\n');
+};
+
+module.exports = eslintErrorsFormatter;
diff --git a/scripts/lint.js b/scripts/lint.js
new file mode 100644
index 0000000000..7dcdf3e8bb
--- /dev/null
+++ b/scripts/lint.js
@@ -0,0 +1,28 @@
+const path = require('path');
+const shell = require('shelljs');
+const chalk = require('chalk');
+const eslintErrorsFormatter = require('./eslintErrorsFormatter');
+
+const frontCmd =
+ 'node ../../node_modules/strapi-lint/node_modules/.bin/eslint --ignore-path .gitignore --ignore-pattern \'/admin/build/\' --config ../../node_modules/strapi-lint/lib/internals/eslint/front/.eslintrc.json admin';
+const backCmd =
+ 'node ../../node_modules/strapi-lint/node_modules/.bin/eslint --ignore-path .gitignore --ignore-pattern \'/admin\' --config ../../node_modules/strapi-lint/lib/internals/eslint/back/.eslintrc.json controllers config services';
+
+const watcher = (label, pckgName, type = 'front') => {
+ shell.echo(label);
+ const cmd = type === 'front' ? frontCmd : backCmd;
+ shell.cd(`packages/${pckgName}`);
+ const data = shell.exec(`${frontCmd} && ${backCmd}`, { silent: true });
+ shell.echo(chalk(eslintErrorsFormatter(data.stdout)));
+ shell.cd('../..');
+
+ if (data.code !== 0) {
+ process.exit(1);
+ }
+
+ shell.echo(`Lint tests passed in ${pckgName}`);
+};
+
+shell.echo('Testing lint');
+watcher('testing admin', 'strapi-admin');
+watcher('testing content-manager', 'strapi-plugin-content-manager');