Skip to content

Commit d803394

Browse files
committed
[eslint-config-sanity] Import eslint config package (#625)
1 parent 823769e commit d803394

File tree

11 files changed

+518
-5
lines changed

11 files changed

+518
-5
lines changed

.eslintrc

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
},
66
"parser": "babel-eslint",
77
"extends": [
8-
"sanity",
9-
"sanity/react",
10-
"sanity/import",
8+
"./packages/eslint-config-sanity/index.js",
9+
"./packages/eslint-config-sanity/react.js",
10+
"./packages/eslint-config-sanity/import.js",
1111
"prettier",
1212
"prettier/react",
1313
"prettier/flowtype"

lerna.json

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"packages": [
88
"packages/@sanity/*",
99
"packages/example-studio",
10+
"packages/eslint-config-sanity",
1011
"packages/test-studio",
1112
"packages/movies-studio",
1213
"packages/blog-studio",

package.json

-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@
5858
"chalk": "^2.3.0",
5959
"eslint": "^4.16.0",
6060
"eslint-config-prettier": "^2.9.0",
61-
"eslint-config-sanity": "^4.0.2",
6261
"eslint-import-resolver-webpack": "^0.8.4",
6362
"eslint-plugin-flowtype": "^2.42.0",
6463
"eslint-plugin-flowtype-errors": "^3.3.7",

packages/@sanity/import/package.json

+9-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,15 @@
1212
"clean": "rimraf lib",
1313
"test": "jest"
1414
},
15-
"keywords": ["sanity", "cms", "headless", "realtime", "content", "import", "ndjson"],
15+
"keywords": [
16+
"sanity",
17+
"cms",
18+
"headless",
19+
"realtime",
20+
"content",
21+
"import",
22+
"ndjson"
23+
],
1624
"dependencies": {
1725
"@rexxars/get-uri": "^2.0.2",
1826
"@sanity/mutator": "^0.125.8",
+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"env": {
3+
"node": true
4+
},
5+
"rules": {
6+
"import/no-commonjs": "off"
7+
}
8+
}
+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# eslint-config-sanity
2+
3+
Shared eslint rules for Sanity
4+
5+
# Usage
6+
7+
`npm i -D eslint-config-sanity`
+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/* eslint-disable no-console */
2+
const difference = require('lodash.difference')
3+
const latest = Object.keys(require('eslint/conf/eslint-all').rules)
4+
const base = Object.keys(require('..').rules)
5+
const latestReactRules = Object.keys(require('eslint-plugin-react').rules).map(ruleName => {
6+
return `react/${ruleName}`
7+
})
8+
const existingReactRules = Object.keys(require('../react').rules)
9+
10+
const replacements = require('eslint/conf/replacements.json').rules
11+
12+
const addedRules = difference(latest, base)
13+
let removedRules = difference(base, latest)
14+
15+
const replacedRules = removedRules.filter(removed => {
16+
return removed in replacements
17+
})
18+
19+
removedRules = difference(removedRules, replacedRules)
20+
21+
const replacedRuleMapping = replacedRules.map(removed => {
22+
return {from: removed, to: replacements[removed]}
23+
})
24+
25+
function printRules(rules) {
26+
if (!rules.length) {
27+
return ' None'
28+
}
29+
return ` ${rules.join('\n ')}`
30+
}
31+
32+
console.log('New rules: \n%s', printRules(addedRules))
33+
console.log('Removed rules: \n%s', printRules(removedRules))
34+
console.log(
35+
'Replaced rules: \n%s',
36+
printRules(
37+
replacedRuleMapping.map(repl => {
38+
return `${repl.from} => ${repl.to}`
39+
})
40+
)
41+
)
42+
43+
console.log()
44+
45+
const addedReactRules = difference(latestReactRules, existingReactRules)
46+
const removeReactRules = difference(existingReactRules, latestReactRules)
47+
console.log('--- eslint-plugin-react ---')
48+
console.log('New rules: \n%s', printRules(addedReactRules))
49+
console.log('Removed rules: \n%s', printRules(removeReactRules))
+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
module.exports = {
2+
plugins: ['import'],
3+
rules: {
4+
'import/default': 'error',
5+
'import/export': 'error',
6+
'import/extensions': ['error', {js: 'never', json: 'always'}],
7+
'import/exports-last': 'off',
8+
'import/first': 'error',
9+
'import/no-anonymous-default-export': 'off',
10+
'import/max-dependencies': 'off',
11+
'import/namespace': 'error',
12+
'import/named': 'error',
13+
'import/newline-after-import': 'warn',
14+
'import/no-absolute-path': 'error',
15+
'import/no-amd': 'error',
16+
'import/no-commonjs': 'error',
17+
'import/no-deprecated': 'off',
18+
'import/no-duplicates': 'error',
19+
'import/no-dynamic-require': 'error',
20+
'import/no-extraneous-dependencies': 'error',
21+
'import/no-internal-modules': 'off',
22+
'import/no-mutable-exports': 'error',
23+
'import/no-named-as-default': 'error',
24+
'import/no-named-as-default-member': 'error',
25+
'import/no-named-default': 'warn',
26+
'import/no-namespace': 'off',
27+
'import/no-nodejs-modules': 'off',
28+
'import/no-restricted-paths': 'off',
29+
'import/no-unassigned-import': 'error',
30+
'import/no-unresolved': 'error',
31+
'import/no-webpack-loader-syntax': 'error',
32+
'import/order': 'warn',
33+
'import/prefer-default-export': 'warn',
34+
'import/unambiguous': 'error'
35+
},
36+
settings: {
37+
'import/resolve': {
38+
extensions: ['.js', '.jsx', '.json']
39+
}
40+
}
41+
}

0 commit comments

Comments
 (0)