@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 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
@@ -0,0 +1,8 @@
1
+ module.exports = {
2
+ "extends": "airbnb-base",
3
+ "env": {
4
+ "browser": true,
5
+ "jquery": true
6
+ },
7
+ "rules": {}
8
+ }
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
+ }