@soleil-se/eslint-config 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +1 -0
- package/README.md +251 -0
- package/client.js +8 -0
- package/package.json +17 -0
- package/server-es6.js +29 -0
- package/server.js +50 -0
- package/vue.js +20 -0
package/LICENSE.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(c) Copyright 2018 Soleil IT Sweden AB, all rights reserved.
|
package/README.md
ADDED
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
# eslint-config-sitevision
|
|
2
|
+
|
|
3
|
+
ESLint configs anpassade för SiteVision som bygger på Airbnbs Javascript styleguide.
|
|
4
|
+
|
|
5
|
+
**Klient**
|
|
6
|
+
https://github.com/airbnb/javascript
|
|
7
|
+
|
|
8
|
+
**Server**
|
|
9
|
+
https://github.com/airbnb/javascript/tree/es5-deprecated/es5
|
|
10
|
+
|
|
11
|
+
Om man stöter på ett fel man inte förstår kan man kolla i styleguiden eller söka på eslints hemsida.
|
|
12
|
+
https://eslint.org/docs/rules/
|
|
13
|
+
|
|
14
|
+
## 1. Innehållsförteckning
|
|
15
|
+
|
|
16
|
+
<!-- TOC depthFrom:2 updateOnSave:false -->
|
|
17
|
+
|
|
18
|
+
- [1. Innehållsförteckning](#1-innehållsförteckning)
|
|
19
|
+
- [2. Installera](#2-installera)
|
|
20
|
+
- [3. Editors](#3-editors)
|
|
21
|
+
- [3.1. Skapa config](#31-skapa-config)
|
|
22
|
+
- [3.2. Importera config](#32-importera-config)
|
|
23
|
+
- [3.3. VS Code](#33-vs-code)
|
|
24
|
+
- [3.3.1. End of line](#331-end-of-line)
|
|
25
|
+
- [3.3.2. Autofix](#332-autofix)
|
|
26
|
+
- [3.3.3. Max length](#333-max-length)
|
|
27
|
+
- [3.3.4. Velocity](#334-velocity)
|
|
28
|
+
- [3.3.5. Vue](#335-vue)
|
|
29
|
+
- [3.3.6. Komplett config](#336-komplett-config)
|
|
30
|
+
- [4. Git](#4-git)
|
|
31
|
+
- [5. CLI](#5-cli)
|
|
32
|
+
- [6. Byggmiljö](#6-byggmiljö)
|
|
33
|
+
- [7. Undantag för SiteVision](#7-undantag-för-sitevision)
|
|
34
|
+
- [7.1. Server](#71-server)
|
|
35
|
+
- [8. Undantag från Airbnb](#8-undantag-från-airbnb)
|
|
36
|
+
- [8.1. Vue](#81-vue)
|
|
37
|
+
- [8.2. Server](#82-server)
|
|
38
|
+
|
|
39
|
+
<!-- /TOC -->
|
|
40
|
+
|
|
41
|
+
## 2. Installera
|
|
42
|
+
|
|
43
|
+
Installera i ditt projekt genom att köra:
|
|
44
|
+
`yarn add github:soleilit/eslint-config-sitevision --dev`
|
|
45
|
+
eller
|
|
46
|
+
`npm i --save-dev github:soleilit/eslint-config-sitevision`
|
|
47
|
+
|
|
48
|
+
## 3. Editors
|
|
49
|
+
Lättaste sättet att komma igång med ESLint är att installera det som extension i din editor.
|
|
50
|
+
|
|
51
|
+
### 3.1. Skapa config
|
|
52
|
+
Man behöver skapa upp tre `.eslintrc` filer i sitt projekt.
|
|
53
|
+
[yeoman-generatorn](https://github.com/soleilit/sv_yeoman_generator) kan göra detta automatiskt med kommandot `yo soleil:eslint`
|
|
54
|
+
```
|
|
55
|
+
<sitevision_projekt>
|
|
56
|
+
|
|
|
57
|
+
+---- client_src
|
|
58
|
+
| |
|
|
59
|
+
| +---- js
|
|
60
|
+
| | |
|
|
61
|
+
| | +---- .eslintrc
|
|
62
|
+
| |
|
|
63
|
+
| +---- vue
|
|
64
|
+
| |
|
|
65
|
+
| +---- .eslintrc
|
|
66
|
+
|
|
|
67
|
+
|
|
|
68
|
+
+---- server_src
|
|
69
|
+
|
|
|
70
|
+
+---- .eslintrc
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 3.2. Importera config
|
|
74
|
+
|
|
75
|
+
`client_src/js/.eslintrc`
|
|
76
|
+
```json
|
|
77
|
+
{
|
|
78
|
+
"extends": "sitevision/client"
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
`client_src/vue/.eslintrc`
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"extends": "sitevision/vue"
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
`server_src/.eslintrc`
|
|
88
|
+
```json
|
|
89
|
+
{
|
|
90
|
+
"extends": "sitevision/server"
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### 3.3. VS Code
|
|
95
|
+
|
|
96
|
+
Installera [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)
|
|
97
|
+
till VS Code. Sedan ska det bara vara att tuta och köra.
|
|
98
|
+
|
|
99
|
+
#### 3.3.1. End of line
|
|
100
|
+
Airbnb använder sig av LF för EOL. Ställs in under [settings](https://code.visualstudio.com/docs/getstarted/settings) i VS Code.
|
|
101
|
+
Ändra `\r\n` till `\n`.
|
|
102
|
+
```json
|
|
103
|
+
{
|
|
104
|
+
"files.eol": "\n"
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
#### 3.3.2. Autofix
|
|
109
|
+
Man kan ställa in så enklare fel åtgärdas automatiskt under [settings](https://code.visualstudio.com/docs/getstarted/settings) i VS Code.
|
|
110
|
+
Se till att stänga av VS Codes inbyggda automatiska formatering.
|
|
111
|
+
|
|
112
|
+
```json
|
|
113
|
+
{
|
|
114
|
+
"eslint.autoFixOnSave": true,
|
|
115
|
+
"editor.formatOnSave": false
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
#### 3.3.3. Max length
|
|
120
|
+
Airbnb föresrpåkar en maxlängd på 100 tecken på en rad.
|
|
121
|
+
Man kan ställa så man visar en linje i VS Code för att visualisera detta. Görs i [settings](https://code.visualstudio.com/docs/getstarted/settings).
|
|
122
|
+
|
|
123
|
+
```json
|
|
124
|
+
{
|
|
125
|
+
"editor.rulers": [
|
|
126
|
+
100
|
|
127
|
+
]
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Eller om man bara vill visa för JavaScript och Vue:
|
|
132
|
+
```json
|
|
133
|
+
{
|
|
134
|
+
"[javascript]": {
|
|
135
|
+
"editor.rulers": [
|
|
136
|
+
100
|
|
137
|
+
]
|
|
138
|
+
},
|
|
139
|
+
"[vue]": {
|
|
140
|
+
"editor.rulers": [
|
|
141
|
+
100
|
|
142
|
+
]
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
#### 3.3.4. Velocity
|
|
147
|
+
För att få stöd för skripttaggar i Velocity behöver man lägga in följande i [settings](https://code.visualstudio.com/docs/getstarted/settings).
|
|
148
|
+
```json
|
|
149
|
+
"eslint.validate": [
|
|
150
|
+
"javascript",
|
|
151
|
+
"javascriptreact",
|
|
152
|
+
{
|
|
153
|
+
"language": "velocity",
|
|
154
|
+
"autoFix": true
|
|
155
|
+
}
|
|
156
|
+
]
|
|
157
|
+
```
|
|
158
|
+
#### 3.3.5. Vue
|
|
159
|
+
För att få stöd för Vue behöver man lägga in följande i [settings](https://code.visualstudio.com/docs/getstarted/settings).
|
|
160
|
+
```json
|
|
161
|
+
"eslint.validate": [
|
|
162
|
+
"javascript",
|
|
163
|
+
"javascriptreact",
|
|
164
|
+
{
|
|
165
|
+
"language": "vue",
|
|
166
|
+
"autoFix": true
|
|
167
|
+
}
|
|
168
|
+
]
|
|
169
|
+
```
|
|
170
|
+
#### 3.3.6. Komplett config
|
|
171
|
+
```json
|
|
172
|
+
{
|
|
173
|
+
"files.eol": "\n",
|
|
174
|
+
"files.insertFinalNewline": true,
|
|
175
|
+
"editor.rulers": [
|
|
176
|
+
100
|
|
177
|
+
],
|
|
178
|
+
"eslint.validate": [
|
|
179
|
+
"javascript",
|
|
180
|
+
"javascriptreact",
|
|
181
|
+
{
|
|
182
|
+
"language": "vue",
|
|
183
|
+
"autoFix": true
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"language": "html",
|
|
187
|
+
"autoFix": true
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"language": "velocity",
|
|
191
|
+
"autoFix": true
|
|
192
|
+
}
|
|
193
|
+
],
|
|
194
|
+
"eslint.autoFixOnSave": true,
|
|
195
|
+
"editor.formatOnSave": false
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## 4. Git
|
|
200
|
+
Om man har problem med linebreaks i git kan man behöva göra följande:
|
|
201
|
+
1. Pusha upp / stasha alla förändringar.
|
|
202
|
+
2. Skapa en fil i roten av projektet med namnet `.gitattributes`.
|
|
203
|
+
3. Ange innehåll i filen: `* text=auto eol=lf`.
|
|
204
|
+
4. Kör: `git rm --cached -r .`
|
|
205
|
+
5. Kör: `git reset --hard`.
|
|
206
|
+
6. Pusha upp filen.
|
|
207
|
+
|
|
208
|
+
Mer info:
|
|
209
|
+
https://stackoverflow.com/questions/9976986/force-lf-eol-in-git-repo-and-working-copy/34810209#34810209
|
|
210
|
+
|
|
211
|
+
## 5. CLI
|
|
212
|
+
Om man vill köra ESLint i sin teminal.
|
|
213
|
+
https://eslint.org/docs/user-guide/command-line-interface
|
|
214
|
+
|
|
215
|
+
## 6. Byggmiljö
|
|
216
|
+
|
|
217
|
+
Om tid och intresse finns kan vi bygga in stöd för ESLint i [sv_gulp_build](https://github.com/soleilit/sv_gulp_build)
|
|
218
|
+
|
|
219
|
+
## 7. Undantag för SiteVision
|
|
220
|
+
|
|
221
|
+
### 7.1. Server
|
|
222
|
+
`no-unused-vars` - Se till att visa vilka variabler som används med `/* exported var1 var2 */` i toppen av filen.
|
|
223
|
+
`no-undef` - Om en variabel är global, definera det med `/* global var1 var2 */` i toppen av filen.
|
|
224
|
+
|
|
225
|
+
## 8. Undantag från Airbnb
|
|
226
|
+
|
|
227
|
+
### 8.1. Vue
|
|
228
|
+
|
|
229
|
+
`no-param-reassign` - Undantag för `state` i Vuex [mutations](https://vuex.vuejs.org/en/mutations.html).
|
|
230
|
+
`vue/max-attributes-per-line` - Undantag för `allowFirstLine`, blev svårläst när det enforcas på element med korta namn (`<p> <a>` osv...)
|
|
231
|
+
|
|
232
|
+
### 8.2. Server
|
|
233
|
+
|
|
234
|
+
#### 8.2.1 JavaScript
|
|
235
|
+
|
|
236
|
+
`vars-on-top` - Avslaget, blir helt crazy annars - Linh.
|
|
237
|
+
`no-param-reassign` - Undantag för `data` i våra dataCreators, vi använder oss av accumilator pattern.
|
|
238
|
+
`import/no-unresolved` - Kan såklart inte resolva SiteVision dependencies och utils.
|
|
239
|
+
|
|
240
|
+
#### 8.2.1 Velocity
|
|
241
|
+
`vars-on-top` - Avslaget, blir helt crazy annars - Linh.
|
|
242
|
+
`no-template-curly-in-string` - Avslaget, Velocity variabler ser ut som template variabler i ES6.
|
|
243
|
+
|
|
244
|
+
**Globala variabler**
|
|
245
|
+
`scriptVariables`
|
|
246
|
+
`Packages`
|
|
247
|
+
`request`
|
|
248
|
+
`svimport`
|
|
249
|
+
`Api`
|
|
250
|
+
`print`
|
|
251
|
+
`out`
|
package/client.js
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@soleil-se/eslint-config",
|
|
3
|
+
"version": "0.1.4",
|
|
4
|
+
"description": "Settings for ESLint in a SiteVision project",
|
|
5
|
+
"author": "Soleil AB",
|
|
6
|
+
"license": "UNLICENSED",
|
|
7
|
+
"private": false,
|
|
8
|
+
"homepage": "https://github.com/soleilit/eslint-config#readme",
|
|
9
|
+
"dependencies": {
|
|
10
|
+
"eslint": "^5.9.0",
|
|
11
|
+
"eslint-config-airbnb-base": "^13.1.0",
|
|
12
|
+
"eslint-plugin-html": "^5.0.0",
|
|
13
|
+
"eslint-plugin-import": "^2.14.0",
|
|
14
|
+
"eslint-plugin-vue": "^5.0.0"
|
|
15
|
+
},
|
|
16
|
+
"devDependencies": {}
|
|
17
|
+
}
|
package/server-es6.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
"extends": "airbnb-base",
|
|
3
|
+
"env": {
|
|
4
|
+
"amd": true,
|
|
5
|
+
"nashorn": true,
|
|
6
|
+
"node": false,
|
|
7
|
+
"commonjs": false
|
|
8
|
+
},
|
|
9
|
+
"globals": {
|
|
10
|
+
"scriptVariables": false,
|
|
11
|
+
"Packages": false,
|
|
12
|
+
"request": false,
|
|
13
|
+
"svimport": false,
|
|
14
|
+
"solimport": false,
|
|
15
|
+
"print": false,
|
|
16
|
+
"out": false,
|
|
17
|
+
"Api": true,
|
|
18
|
+
"solimport": true
|
|
19
|
+
},
|
|
20
|
+
"rules": {
|
|
21
|
+
//"no-unused-vars": 0, //https://eslint.org/docs/rules/no-unused-vars
|
|
22
|
+
"import/no-unresolved": 0,
|
|
23
|
+
"vars-on-top": 0,
|
|
24
|
+
"no-param-reassign": ["error", {
|
|
25
|
+
"props": true,
|
|
26
|
+
"ignorePropertyModificationsFor": ["data"]
|
|
27
|
+
}]
|
|
28
|
+
}
|
|
29
|
+
}
|
package/server.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
"extends": "airbnb-base/legacy",
|
|
3
|
+
"plugins": ["html"],
|
|
4
|
+
"settings": {
|
|
5
|
+
"html/html-extensions": [".html", ".vm"], // consider .html and .wm files as HTML
|
|
6
|
+
},
|
|
7
|
+
"overrides": [{
|
|
8
|
+
"files": ['*.js'],
|
|
9
|
+
"env": {
|
|
10
|
+
"amd": true,
|
|
11
|
+
"nashorn": true,
|
|
12
|
+
"node": false,
|
|
13
|
+
"commonjs": false
|
|
14
|
+
},
|
|
15
|
+
"globals": {
|
|
16
|
+
"scriptVariables": false,
|
|
17
|
+
"Packages": false,
|
|
18
|
+
"request": false,
|
|
19
|
+
"svimport": false,
|
|
20
|
+
"print": false,
|
|
21
|
+
"out": false,
|
|
22
|
+
"Api": true,
|
|
23
|
+
"solimport": true
|
|
24
|
+
},
|
|
25
|
+
"rules": {
|
|
26
|
+
//"no-unused-vars": 0, //https://eslint.org/docs/rules/no-unused-vars
|
|
27
|
+
"vars-on-top": 0,
|
|
28
|
+
"no-param-reassign": ["error", {
|
|
29
|
+
"props": true,
|
|
30
|
+
"ignorePropertyModificationsFor": ["data"]
|
|
31
|
+
}]
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"files": ['*.vm', '*.html'],
|
|
36
|
+
"env": {
|
|
37
|
+
"browser": true,
|
|
38
|
+
"jquery": true
|
|
39
|
+
},
|
|
40
|
+
"globals": {
|
|
41
|
+
"$svjq": false,
|
|
42
|
+
"Soleil": false
|
|
43
|
+
},
|
|
44
|
+
"rules": {
|
|
45
|
+
"vars-on-top": 0,
|
|
46
|
+
"no-template-curly-in-string": 0
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
}
|
package/vue.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
"extends": ["airbnb-base", "plugin:vue/recommended"],
|
|
3
|
+
"env": {
|
|
4
|
+
"browser": true,
|
|
5
|
+
"jquery": true
|
|
6
|
+
},
|
|
7
|
+
"rules": {
|
|
8
|
+
"no-param-reassign": ["error", {
|
|
9
|
+
"props": true,
|
|
10
|
+
"ignorePropertyModificationsFor": ["state"]
|
|
11
|
+
}],
|
|
12
|
+
"vue/max-attributes-per-line": ["error", {
|
|
13
|
+
"singleline": 1,
|
|
14
|
+
"multiline": {
|
|
15
|
+
"max": 1,
|
|
16
|
+
"allowFirstLine": true
|
|
17
|
+
}
|
|
18
|
+
}]
|
|
19
|
+
}
|
|
20
|
+
}
|