Skip to content

Commit ac52f5a

Browse files
Merge pull request #48 from firefoxic/feature/file-structure
Feature/file-structure
2 parents 6a346da + eba49af commit ac52f5a

File tree

18 files changed

+513
-184
lines changed

18 files changed

+513
-184
lines changed

.eslintrc

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
root: true
2-
3-
parserOptions:
4-
ecmaVersion: 2022
5-
sourceType: "module"
6-
7-
env:
8-
es2022: true
9-
browser: true
10-
11-
globals:
12-
noUiSlider: readonly
13-
Pristine: readonly
14-
15-
extends:
16-
"htmlacademy/vanilla"
1+
{
2+
"root": true,
3+
"parserOptions": {
4+
"ecmaVersion": 2022,
5+
"sourceType": "module"
6+
},
7+
"env": {
8+
"es2022": true,
9+
"browser": true
10+
},
11+
"globals": {
12+
"noUiSlider": "readonly",
13+
"Pristine": "readonly"
14+
},
15+
"extends": "htmlacademy/vanilla"
16+
}

.stylelintrc

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
{
22
"extends": "stylelint-config-htmlacademy",
3-
43
"rules": {
5-
"declaration-no-important": true,
6-
"indentation": [2, {"ignore": ["inside-parens"]}]
4+
"codeguide/indentation": [
5+
2,
6+
{
7+
"ignore": [
8+
"inside-parens"
9+
]
10+
}
11+
]
712
}
813
}

README.md

Lines changed: 87 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -66,28 +66,30 @@
6666
├── .github/ # Специальная папка для github
6767
│ └── workflows/ # Автоматизация для github actions
6868
│ ├── check.yml # Запускает линтеры на Гитхабе
69-
│ └── gh-pages.yml # Публикует проект и создаёт ссылку на проект
69+
│ └── gh-pages.yml # Публикует проект и создаёт ссылку на проект
7070
├── source/ # Исходники проекта
7171
│ ├── fonts/ # Папка для шрифтов
7272
│ ├── images/ # Папка для хранения картинок
7373
│ │ └── icons/ # Специальная папка для преобразования svg в спрайт(stack)
74-
│ ├── js # Скрипты
75-
│ │ └── script.js # Главный скрипт
76-
│ ├── sass/ # Папка для препроцессорных файлов sass
77-
│ │ └── blocks/ # Стили БЭМ-блоков
78-
│ │ └── header.scss # Стили для конкретного БЭМ-блока
79-
│ │ └── global # Файл для подключения стилей библиотек из папки
80-
│ │ ├── fonts.scss # Подключение шрифтов к проекту
81-
│ │ ├── global.scss # Глобальные стили, которые касаются всего проекта
82-
│ │ └── variables.scss # Переменные для всего проекта
74+
│ ├── scripts/ # Скрипты
75+
│ │ └── index.js # Главный скрипт
76+
│ ├── styles/ # Папка для препроцессорных файлов sass
77+
│ │ ├── blocks/ # Стили БЭМ-блоков
78+
│ │ │ └── header.scss # Стили для конкретного БЭМ-блока
79+
│ │ ├── global # Файл для подключения стилей библиотек из папки
80+
│ │ │ ├── fonts.scss # Подключение шрифтов к проекту
81+
│ │ │ ├── global.scss # Глобальные стили, которые касаются всего проекта
82+
│ │ │ └── variables.scss # Переменные для всего проекта
83+
│ │ └── styles.scss # Основной стилевой файл с импортами всех остальных
8384
│ ├── vendor # Папка для сторонних бибилотек
84-
│ └── index.html # HTML-файл для главной страницы
85-
└── .editorconfig # Настройки форматирования текстовых файлов
86-
└── .gitignore # Настройки игнорирования файлов для git
87-
└── .stylelintrc # Правила для stylelint
88-
└── gulpfile.js # Автоматизация для Gulp
89-
└── package.json # Зависимости проекта, скрипты, настройки проекта
90-
└── package-lock.json # Зависимости проекта
85+
│ └── index.html # HTML-файл для главной страницы
86+
├── .editorconfig # Настройки форматирования текстовых файлов
87+
├── .eslintrc # Правила для eslint
88+
├── .gitignore # Настройки игнорирования файлов для git
89+
├── .stylelintrc # Правила для stylelint
90+
├── gulpfile.js # Автоматизация для Gulp
91+
├── package.json # Зависимости проекта, скрипты, настройки проекта
92+
├── package-lock.json # Зависимости проекта
9193
└── README.md # Документация
9294
```
9395

@@ -106,63 +108,64 @@
106108
- `npm run lint:styles` - проверяет проект на совместимость с stylelint
107109
- `npm run lint:spaces` - проверяет отступы с помощью editorConfig
108110
- `npm run lint:html` - проверяет разметку по правилам linthtml
109-
- `npm run lint:js` - проверяет скрипты по правилам eslint
111+
- `npm run lint:scripts` - проверяет скрипты по правилам eslint
110112

111113
## Работа с разметкой
112114

113115
Все HTML-файлы с разметкой складывайте в папку `source/`.
114116

115117
```shell
116-
── source/
117-
├── index.html
118-
├── catalog.html
119-
└── form.html
118+
── source/
119+
├── index.html
120+
├── catalog.html
121+
└── form.html
120122
```
121123

122124
Из папки `source/` сборка переносит файлы в папку `build/`.
123125

124126
```shell
125-
── build/
126-
├── index.html
127-
├── catalog.html
128-
└── form.html
127+
── build/
128+
├── index.html
129+
├── catalog.html
130+
└── form.html
129131
```
130132

131133
## Работа со стилями
132134

133-
Все стили находятся в папке `source/sass/`.
135+
Все стили находятся в папке `source/styles/`.
134136

135137
```shell
136-
├── source/
137-
│ ├── sass
138-
│ │ └── blocks/
139-
│ │ └── header.scss
140-
│ │ └── global
141-
│ │ ├── fonts.scss
142-
│ │ ├── global.scss
143-
│ │ └── variables.scss
138+
└── source/
139+
└── styles/
140+
├── blocks/
141+
│ └── header.scss
142+
├── global
143+
│ ├── fonts.scss
144+
│ ├── global.scss
145+
│ └── variables.scss
146+
└── styles.scss
144147
```
145148

146-
Все БЭМ-блоки и остальные препроцессорные файлы подключайте в `source/sass/styles.scss`.
149+
Все БЭМ-блоки и остальные препроцессорные файлы подключайте в `source/styles/styles.scss`.
147150

148151
```scss
149152
/* GLOBAL */
150-
@import "global/variables";
151-
@import "global/global";
152-
@import "global/fonts";
153+
@import "./global/variables.scss";
154+
@import "./global/global.scss";
155+
@import "./global/fonts.scss";
153156
154157
/* BLOCKS */
155-
@import "blocks/header";
158+
@import "./blocks/header.scss";
156159
```
157160

158161
БЭМ-блоки импортируйте в секцию `/* BLOCKS */`.
159162

160163
Все препроцессорные файлы сборка обработает и превратит в `styles.css`. Файл `styles.css` сборка перенесёт в
161164

162165
```shell
163-
── build/
164-
└── css/
165-
└── styles.css
166+
── build/
167+
└── styles/
168+
└── styles.css
166169
```
167170

168171
## Работа с графикой
@@ -176,37 +179,37 @@
176179
Векторную графику для спрайта складывайте в `source/images/icons/`. Автоматизация создаст из иконок файл `stack.svg`.
177180

178181
```shell
179-
── source/
180-
├── .raw/
181-
── images/
182-
└── icons/
182+
── source/
183+
├── .raw/
184+
── images/
185+
└── icons/
183186
```
184187

185188
Всю графику автоматизация перенесёт в `build/images/`.
186189

187190
```shell
188-
── build/
189-
└── images/
190-
── icons # папка для спрайта
191-
└── stack.svg # спрайт
192-
├── bg.jpg
193-
├── bg.webp
194-
├── hero.png
195-
├── hero.webp
196-
└── burger.svg
191+
── build/
192+
└── images/
193+
── icons # папка для спрайта
194+
└── stack.svg # спрайт
195+
├── bg.jpg
196+
├── bg.webp
197+
├── hero.png
198+
├── hero.webp
199+
└── burger.svg
197200
```
198201

199202
## Работа со шрифтами
200203

201204
Все шрифтовые файлы лежат в `source/fonts/`. Сборка переносит их в `build/fonts/`.
202205

203206
```shell
204-
── build/
205-
└── fonts/
206-
├── open-sans.woff2
207-
├── open-sans.woff
208-
├── open-sans-bold.woff
209-
└── open-sans-bold.woff
207+
── build/
208+
└── fonts/
209+
├── open-sans.woff2
210+
├── open-sans.woff
211+
├── open-sans-bold.woff
212+
└── open-sans-bold.woff
210213
211214
```
212215

@@ -215,19 +218,19 @@
215218
Все скрипты лежат в `source/script/`.
216219

217220
```shell
218-
── source/
219-
── js
220-
├── script.js
221-
└── modal.js
221+
── source/
222+
── scripts/
223+
├── index.js
224+
└── modal.js
222225
```
223226

224227
Сборка переносит их в `build/script/`.
225228

226229
```shell
227-
── build/
228-
── js
229-
├── script.js
230-
└── modal.js
230+
── build/
231+
── scripts/
232+
├── index.js
233+
└── modal.js
231234
```
232235

233236
## Работа со сторонними библиотеками
@@ -239,30 +242,30 @@
239242
Положите файлы библиотеки в папку `source/vendor/`, как показано ниже:
240243

241244
```shell
242-
── source/
243-
└── vendor/
244-
├── library.css
245-
└── library.js
245+
── source/
246+
└── vendor/
247+
├── library.css
248+
└── library.js
246249
```
247250

248251
Если у вас есть несколько библиотек с разными файлами, вы можете группировать файлы одной библиотеки в ее собственную подпапку. Например:
249252

250253
```shell
251-
── source/
252-
└── vendor/
253-
└── library/
254-
├── library.css
255-
└── library.js
254+
── source/
255+
└── vendor/
256+
└── library/
257+
├── library.css
258+
└── library.js
256259
```
257260

258261
При сборке вашего проекта, все файлы из папки `source/vendor/` будут включены в папку `build/vendor/`, сохраняя их структуру. Например:
259262

260263
```shell
261-
── build/
262-
└── vendor/
263-
└── library/
264-
├── library.css
265-
└── library.js
264+
── build/
265+
└── vendor/
266+
└── library/
267+
├── library.css
268+
└── library.js
266269
```
267270

268271
Таким образом, вы можете удобно организовать и внедрить сторонние библиотеки в ваш проект, сохраняя их структуру в папке `source/vendor/`.

gulpfile.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,22 +28,22 @@ export function lintBem () {
2828
}
2929

3030
export function processStyles () {
31-
return gulp.src('source/sass/*.scss', { sourcemaps: isDevelopment })
31+
return gulp.src('source/styles/*.scss', { sourcemaps: isDevelopment })
3232
.pipe(plumber())
3333
.pipe(sass().on('error', sass.logError))
3434
.pipe(postcss([
3535
postUrl({ assetsPath: '../' }),
3636
autoprefixer(),
3737
csso()
3838
]))
39-
.pipe(gulp.dest('build/css', { sourcemaps: isDevelopment }))
39+
.pipe(gulp.dest('build/styles', { sourcemaps: isDevelopment }))
4040
.pipe(browser.stream());
4141
}
4242

4343
export function processScripts () {
44-
return gulp.src('source/js/**/*.js')
44+
return gulp.src('source/scripts/**/*.js')
4545
.pipe(terser())
46-
.pipe(gulp.dest('build/js'))
46+
.pipe(gulp.dest('build/scripts'))
4747
.pipe(browser.stream());
4848
}
4949

@@ -121,8 +121,8 @@ function reloadServer (done) {
121121
}
122122

123123
function watchFiles () {
124-
gulp.watch('source/sass/**/*.scss', gulp.series(processStyles));
125-
gulp.watch('source/js/script.js', gulp.series(processScripts));
124+
gulp.watch('source/styles/**/*.scss', gulp.series(processStyles));
125+
gulp.watch('source/scripts/**/*.js', gulp.series(processScripts));
126126
gulp.watch('source/*.html', gulp.series(processMarkup, reloadServer));
127127
}
128128

0 commit comments

Comments
 (0)