Skip to content

Instantly share code, notes, and snippets.

@yyscamper
Created March 29, 2017 06:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yyscamper/00eee65d1a9aac67ff1640ddbc54672e to your computer and use it in GitHub Desktop.
Save yyscamper/00eee65d1a9aac67ff1640ddbc54672e to your computer and use it in GitHub Desktop.
Convert ESLint airbnb JavaScript config into single file
'use strict';
var _ = require('lodash');
var airbnb = require('eslint-config-airbnb');
var yaml = require('js-yaml');
function load(filename) {
console.log('load file ' + filename);
return require(filename);
}
function parse(obj) {
if (obj.hasOwnProperty('extends')) {
var newObj = _.reduce(obj.extends, function(acc, file) {
if (_.endsWith(file, 'react.js') || _.endsWith(file, 'react-a11y.js')) {
return acc;
}
return _.defaultsDeep(parse(load(file)), acc);
}, obj);
delete newObj.extends;
obj = newObj;
}
return obj;
}
var result = parse(airbnb);
require('fs').writeFileSync('.eslintrc', JSON.stringify(result, null, ' '));
require('fs').writeFileSync('.eslintrc.yml', yaml.safeDump(result, { indent: 2, sortKeys: true }));
console.log('DONE!');
@yyscamper
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment