Skip to content

Commit

Permalink
2023
Browse files Browse the repository at this point in the history
  • Loading branch information
dyadyal authored Oct 30, 2023
1 parent 9b714d1 commit ead9513
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 19 deletions.
11 changes: 8 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,20 @@
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"build": "vite build --minify false --mode build",
"prod": "vite build --minify true --mode prod",
"watch": "vite build --watch",
"preview": "vite preview"
},
"devDependencies": {
"glob": "^10.3.10",
"glob": "^10.3.3",
"sass": "^1.64.1",
"vite": "^4.4.5",
"vite-plugin-full-reload": "^1.0.5",
"vite-plugin-html-minifier": "^1.0.3",
"vite-plugin-nunjucks": "^0.1.10"
},
"dependencies": {
"swiper": "^10.1.0"
}
}
}
76 changes: 60 additions & 16 deletions vite.config.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { defineConfig } from 'vite'

// Импорт Nunjucks
import nunjucks from 'vite-plugin-nunjucks'

Expand All @@ -9,9 +11,12 @@ import { fileURLToPath } from 'node:url'
// Импорт модуля для обновления страницы в браузере (используется только для файлов "*.njk", но это можно настроить)
import FullReload from 'vite-plugin-full-reload'

// Импорт модуля для минификации html кода при prod-сборке
import htmlMinifier from 'vite-plugin-html-minifier'


// Генерация объекта со всеми страницами проекта в виде { 'имя/страницы': '/полный/путь/к/файлу.html', ... }
const pages = Object.fromEntries(glob.sync("app/**/*.html", {ignore: "app/{cmp,inc}/**/*.html"}).map(file => [
const pages = Object.fromEntries(glob.sync("app/**/*.html").map(file => [
path.relative(
'app',
file.slice(0, file.length - path.extname(file).length)
Expand All @@ -21,41 +26,80 @@ const pages = Object.fromEntries(glob.sync("app/**/*.html", {ignore: "app/{cmp,i
console.log(pages)


export default {
root: "app", // назначаем корневую директорию проекта
// Фильтры
const formatMoney = (val) => { // получает int(1234567), возвращает str(1 234 567)
let result = ""
let v = val.toString()
for (let i = 0; i < v.length; i++) {
if (i % 3 === 0 && i !== 0)
result = `${v[v.length-1 - i]} ` + result
else
result = v[v.length-1 - i] + result
}

return result
}


clearScreen: false, // отключаем очистку консоли при запуске сервера
export default defineConfig((command) => {
const global = {
root: "app", // назначаем корневую директорию проекта

clearScreen: false, // отключаем очистку консоли при запуске сервера
}

// настройки для dev сервера
server: {
const server = {
open: true, // при запуске открываем страницу в браузере
host: true, // создаём хост для подключения из локальной сети
port: 8080,
},
}

// настройки для preview сервера
preview: {
const preview = {
open: true, // при запуске открываем страницу в браузере
host: true, // создаём хост для подключения из локальной сети
port: 8081,
},
}

// настройки для сборщика
build: {
const build = {
cssCodeSplit: false, // отключаем разделение стилей по разным файлам

outDir: "../dist", // задаём папку для сборки
emptyOutDir: "../dist", // задаём папку, которую перед сборкой нужно очищать

rollupOptions: {
input: pages // передаём все страницы проекта для сборщика
}
},
},
}

// настройки плагинов
plugins: [
nunjucks.default(), // активация Nunjucks
FullReload(['config/routes.rb', 'app/**/*'], {always: true}) // автоматическое обновление страницы при изменении файлов
],
}
const plugins = [
// активация Nunjucks
nunjucks.default({
nunjucksEnvironment: {
filters: {
formatMoney: formatMoney
}
}
}),

// автоматическое обновление страницы при изменении любых файлов
FullReload(['config/routes.rb', 'app/**/*'], {always: true}),

// Минификация html при prod-сборке
htmlMinifier({
minify: command.mode == "prod",
}),
]


return {
...global,
server,
preview,
build,
plugins
}
})

0 comments on commit ead9513

Please sign in to comment.