Added config with ES2015-only rules

This commit adds an additional config, which should be used in
ES2015-based projects. It's available by adding
`extends: openstack/es2015` to project's .eslintrc file.

Change-Id: I5d54cdceb206db7a52ee396eafc513b290e38f86
This commit is contained in:
Vitaly Kramskikh 2016-07-25 17:52:13 +03:00
parent b2b34d88df
commit ec845e5e7f
6 changed files with 90 additions and 18 deletions

28
.eslintrc-es2015 Normal file
View File

@ -0,0 +1,28 @@
# This file contains rules which should only be enabled in
# ES2015-based projects.
extends: openstack
parserOptions:
ecmaVersion: 6
sourceType: module
rules:
# disallow unnecessary .call() and .apply()
# http://eslint.org/docs/rules/no-useless-call
no-useless-call: 2
# require let or const instead of var
# http://eslint.org/docs/rules/no-var
no-var: 2
# suggest using arrow functions as callbacks
# http://eslint.org/docs/rules/prefer-arrow-callback
prefer-arrow-callback: 2
# suggest using the spread operator instead of .apply().
# http://eslint.org/docs/rules/prefer-spread
prefer-spread: 2
# suggest using the rest parameters instead of arguments
# http://eslint.org/docs/rules/prefer-rest-params
prefer-rest-params: 2

View File

@ -12,7 +12,8 @@ project to stay as close to the common guidelines as possible.
To add these rules to your project, follow these steps.
1. `npm install --save-dev eslint eslint-config-openstack`
2. Add `extends: "openstack"` to your `.eslintrc` yaml file
2. Add `extends: "openstack"` to your `.eslintrc` yaml file. If your project is using ES2015, add
`extends: "openstack/es2015"` instead.
## Approval Policies

22
es2015.js Normal file
View File

@ -0,0 +1,22 @@
/*
* Copyright 2016 Mirantis, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License. You may obtain
* a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
**/
/**
* The default module for this package simply reads in the .eslintrc-es2015 yaml file, and returns
* it as a module.
*/
module.exports = require('./load-config')('.eslintrc-es2015');

View File

@ -14,22 +14,9 @@
* under the License.
*/
/*eslint-disable strict*/
'use strict';
/*eslint-enable strict*/
/**
* The default module for this package simply reads in the .eslintrc yaml file, and returns it
* as a module.
*/
var yaml = require('js-yaml');
var fs = require('fs');
var path = require('path');
/*eslint-disable no-sync */
var rcPath = path.join(__dirname, '.eslintrc');
var fileContent = fs.readFileSync(rcPath);
/*eslint-enable no-sync */
module.exports = yaml.safeLoad(fileContent);
module.exports = require('./load-config')('.eslintrc');

31
load-config.js Normal file
View File

@ -0,0 +1,31 @@
/*
* Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
*
* Licensed under the Apache License, Version 2.0 (the 'License'); you may
* not use this file except in compliance with the License. You may obtain
* a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an 'AS IS' BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
/**
* This is a helper module used to load and export YAML-based ESLint config
*/
var yaml = require('js-yaml');
var fs = require('fs');
var path = require('path');
module.exports = function(filename) {
'use strict';
var rcPath = path.join(__dirname, filename);
var fileContent = fs.readFileSync(rcPath); // eslint-disable-line no-sync
return yaml.safeLoad(fileContent);
};

View File

@ -5,7 +5,10 @@
"main": "index.js",
"files": [
"index.js",
"es2015.js",
"load-config.js",
".eslintrc",
".eslintrc-es2015",
"LICENSE",
"README.md"
],