mirror of
https://github.com/zebrajr/react.git
synced 2026-01-15 12:15:22 +00:00
Gulp: lint, flow, and version-check (#7174)
* Add plugin loading for gulp * Convert `lint` task to gulp * Convert `flow` task to gulp * Convert `version-check` task to gulp * Add missing semicolons
This commit is contained in:
committed by
Paul O’Shannessy
parent
2b226f5fa6
commit
69703e04d5
15
Gruntfile.js
15
Gruntfile.js
@@ -52,11 +52,17 @@ module.exports = function(grunt) {
|
||||
grunt.loadNpmTasks(npmTaskName);
|
||||
});
|
||||
|
||||
grunt.registerTask('eslint', require('./grunt/tasks/eslint'));
|
||||
grunt.registerTask('eslint', function() {
|
||||
// Use gulp here.
|
||||
spawnGulp(['eslint'], null, this.async());
|
||||
});
|
||||
|
||||
grunt.registerTask('lint', ['eslint']);
|
||||
|
||||
grunt.registerTask('flow', require('./grunt/tasks/flow'));
|
||||
grunt.registerTask('flow', function() {
|
||||
// Use gulp here.
|
||||
spawnGulp(['flow'], null, this.async());
|
||||
});
|
||||
|
||||
grunt.registerTask('delete-build-modules', function() {
|
||||
// Use gulp here.
|
||||
@@ -84,7 +90,10 @@ module.exports = function(grunt) {
|
||||
grunt.registerTask('npm-react-addons:release', npmReactAddonsTasks.buildReleases);
|
||||
grunt.registerTask('npm-react-addons:pack', npmReactAddonsTasks.packReleases);
|
||||
|
||||
grunt.registerTask('version-check', require('./grunt/tasks/version-check'));
|
||||
grunt.registerTask('version-check', function() {
|
||||
// Use gulp here.
|
||||
spawnGulp(['version-check'], null, this.async());
|
||||
});
|
||||
|
||||
grunt.registerTask('build:basic', [
|
||||
'build-modules',
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
var grunt = require('grunt');
|
||||
|
||||
var extension = process.platform === 'win32' ? '.cmd': '';
|
||||
|
||||
module.exports = function() {
|
||||
var done = this.async();
|
||||
grunt.util.spawn({
|
||||
cmd: 'node_modules/.bin/eslint' + extension,
|
||||
args: ['.'],
|
||||
opts: {stdio: 'inherit'}, // allows colors to passthrough
|
||||
}, function(err, result, code) {
|
||||
if (err) {
|
||||
grunt.log.error('Lint failed');
|
||||
} else {
|
||||
grunt.log.ok('Lint passed');
|
||||
}
|
||||
|
||||
done(code === 0);
|
||||
});
|
||||
};
|
||||
@@ -1,22 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
var grunt = require('grunt');
|
||||
|
||||
var extension = process.platform === 'win32' ? '.cmd': '';
|
||||
|
||||
module.exports = function() {
|
||||
var done = this.async();
|
||||
grunt.util.spawn({
|
||||
cmd: 'node_modules/.bin/flow' + extension,
|
||||
args: ['check', '.'],
|
||||
opts: {stdio: 'inherit'},
|
||||
}, function(err, result, code) {
|
||||
if (err) {
|
||||
grunt.log.error('Flow failed');
|
||||
} else {
|
||||
grunt.log.ok('Flow passed');
|
||||
}
|
||||
|
||||
done(code === 0);
|
||||
});
|
||||
};
|
||||
@@ -1,37 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
var grunt = require('grunt');
|
||||
|
||||
module.exports = function() {
|
||||
var pkgVersion = grunt.config.data.pkg.version;
|
||||
|
||||
var addonsData = grunt.file.readJSON('./packages/react-addons/package.json');
|
||||
var versions = {
|
||||
'packages/react/package.json':
|
||||
grunt.file.readJSON('./packages/react/package.json').version,
|
||||
'packages/react-dom/package.json':
|
||||
grunt.file.readJSON('./packages/react-dom/package.json').version,
|
||||
'packages/react-native-renderer/package.json':
|
||||
grunt.file.readJSON('./packages/react-native-renderer/package.json').version,
|
||||
'packages/react-addons/package.json (version)': addonsData.version,
|
||||
// Get the "version" without the range bit
|
||||
'packages/react-addons/package.json (react dependency)': addonsData.peerDependencies.react.slice(1),
|
||||
'src/ReactVersion.js': require('../../src/ReactVersion'),
|
||||
};
|
||||
|
||||
// Return true (ok) or false (failed)
|
||||
return Object.keys(versions).reduce(function(prev, name) {
|
||||
var version = versions[name];
|
||||
var ok = true;
|
||||
if (version !== pkgVersion) {
|
||||
grunt.log.error(
|
||||
'%s version does not match package.json. Expected %s, saw %s.',
|
||||
name,
|
||||
pkgVersion,
|
||||
version
|
||||
);
|
||||
ok = false;
|
||||
}
|
||||
return prev && ok;
|
||||
}, true);
|
||||
};
|
||||
49
gulp/tasks/eslint.js
Normal file
49
gulp/tasks/eslint.js
Normal file
@@ -0,0 +1,49 @@
|
||||
/**
|
||||
* Copyright 2013-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
var path = require('path');
|
||||
var spawn = require('child_process').spawn;
|
||||
|
||||
var extension = process.platform === 'win32' ? '.cmd' : '';
|
||||
|
||||
module.exports = function(gulp, plugins) {
|
||||
var gutil = plugins.util;
|
||||
|
||||
return function(done) {
|
||||
spawn(
|
||||
process.execPath,
|
||||
[
|
||||
path.join('node_modules', '.bin', 'eslint' + extension),
|
||||
'.',
|
||||
],
|
||||
{
|
||||
// Allow colors to pass through
|
||||
stdio: 'inherit',
|
||||
}
|
||||
).on('close', function(code) {
|
||||
if (code !== 0) {
|
||||
gutil.log(
|
||||
gutil.colors.red(
|
||||
'Lint failed'
|
||||
)
|
||||
);
|
||||
process.exit(code);
|
||||
}
|
||||
|
||||
gutil.log(
|
||||
gutil.colors.green(
|
||||
'Lint passed'
|
||||
)
|
||||
);
|
||||
done();
|
||||
});
|
||||
};
|
||||
};
|
||||
50
gulp/tasks/flow.js
Normal file
50
gulp/tasks/flow.js
Normal file
@@ -0,0 +1,50 @@
|
||||
/**
|
||||
* Copyright 2013-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
var path = require('path');
|
||||
var spawn = require('child_process').spawn;
|
||||
|
||||
var extension = process.platform === 'win32' ? '.cmd' : '';
|
||||
|
||||
module.exports = function(gulp, plugins) {
|
||||
var gutil = plugins.util;
|
||||
|
||||
return function(done) {
|
||||
spawn(
|
||||
process.execPath,
|
||||
[
|
||||
path.join('node_modules', '.bin', 'flow' + extension),
|
||||
'check',
|
||||
'.',
|
||||
],
|
||||
{
|
||||
// Allow colors to pass through
|
||||
stdio: 'inherit',
|
||||
}
|
||||
).on('close', function(code) {
|
||||
if (code !== 0) {
|
||||
gutil.log(
|
||||
gutil.colors.red(
|
||||
'Flow failed'
|
||||
)
|
||||
);
|
||||
process.exit(code);
|
||||
}
|
||||
|
||||
gutil.log(
|
||||
gutil.colors.green(
|
||||
'Flow passed'
|
||||
)
|
||||
);
|
||||
done();
|
||||
});
|
||||
};
|
||||
};
|
||||
55
gulp/tasks/version-check.js
Normal file
55
gulp/tasks/version-check.js
Normal file
@@ -0,0 +1,55 @@
|
||||
/**
|
||||
* Copyright 2013-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
module.exports = function(gulp, plugins) {
|
||||
var gutil = plugins.util;
|
||||
|
||||
return function(done) {
|
||||
var reactVersion = require('../../package.json').version;
|
||||
|
||||
var addonsData = require('../../packages/react-addons/package.json');
|
||||
var versions = {
|
||||
'packages/react/package.json':
|
||||
require('../../packages/react/package.json').version,
|
||||
'packages/react-dom/package.json':
|
||||
require('../../packages/react-dom/package.json').version,
|
||||
'packages/react-native-renderer/package.json':
|
||||
require('../../packages/react-native-renderer/package.json').version,
|
||||
'packages/react-addons/package.json (version)': addonsData.version,
|
||||
'packages/react-addons/package.json (react dependency)':
|
||||
// Get the "version" without the range bit
|
||||
addonsData.peerDependencies.react.slice(1),
|
||||
'src/ReactVersion.js': require('../../src/ReactVersion'),
|
||||
};
|
||||
|
||||
var allVersionsMatch = true;
|
||||
Object.keys(versions).forEach(function(name) {
|
||||
var version = versions[name];
|
||||
if (version !== reactVersion) {
|
||||
allVersionsMatch = false;
|
||||
gutil.log(
|
||||
gutil.colors.red(
|
||||
'%s version does not match package.json. Expected %s, saw %s.'
|
||||
),
|
||||
name,
|
||||
reactVersion,
|
||||
version
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
if (!allVersionsMatch) {
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
done();
|
||||
};
|
||||
};
|
||||
15
gulpfile.js
15
gulpfile.js
@@ -18,6 +18,13 @@ var babelPluginModules = require('fbjs-scripts/babel-6/rewrite-modules');
|
||||
var extractErrors = require('./scripts/error-codes/gulp-extract-errors');
|
||||
var devExpressionWithCodes = require('./scripts/error-codes/dev-expression-with-codes');
|
||||
|
||||
// Load all of the Gulp plugins.
|
||||
var plugins = require('gulp-load-plugins')();
|
||||
|
||||
function getTask(name) {
|
||||
return require(`./gulp/tasks/${name}`)(gulp, plugins);
|
||||
}
|
||||
|
||||
var paths = {
|
||||
react: {
|
||||
src: [
|
||||
@@ -59,6 +66,14 @@ var babelOpts = {
|
||||
],
|
||||
};
|
||||
|
||||
gulp.task('eslint', getTask('eslint'));
|
||||
|
||||
gulp.task('lint', ['eslint']);
|
||||
|
||||
gulp.task('flow', getTask('flow'));
|
||||
|
||||
gulp.task('version-check', getTask('version-check'));
|
||||
|
||||
gulp.task('react:clean', function() {
|
||||
return del([paths.react.lib]);
|
||||
});
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
"gulp": "^3.9.0",
|
||||
"gulp-babel": "^6.0.0",
|
||||
"gulp-flatten": "^0.2.0",
|
||||
"gulp-load-plugins": "^1.2.4",
|
||||
"gulp-util": "^3.0.7",
|
||||
"gzip-js": "~0.3.2",
|
||||
"jest": "^12.1.1",
|
||||
|
||||
Reference in New Issue
Block a user