staticky 0.1.1 → 0.3.0
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -0
- data/CHANGELOG.md +14 -0
- data/README.md +378 -18
- data/lib/staticky/application.rb +36 -0
- data/lib/staticky/builder.rb +4 -2
- data/lib/staticky/cli/commands/build.rb +13 -0
- data/lib/staticky/cli/commands/generate.rb +67 -0
- data/lib/staticky/cli/commands/version.rb +13 -0
- data/lib/staticky/cli/commands.rb +13 -0
- data/lib/staticky/cli.rb +0 -60
- data/lib/staticky/deps.rb +1 -1
- data/lib/staticky/filesystem.rb +0 -3
- data/lib/staticky/phlex/view_helpers.rb +12 -2
- data/lib/staticky/pluggable.rb +35 -0
- data/lib/staticky/resource.rb +14 -15
- data/lib/staticky/resources/plugins/phlex.rb +42 -0
- data/lib/staticky/resources/plugins/prelude.rb +76 -0
- data/lib/staticky/resources/plugins.rb +9 -0
- data/lib/staticky/router.rb +13 -18
- data/lib/staticky/routing/plugins/prelude.rb +97 -0
- data/lib/staticky/routing/plugins.rb +9 -0
- data/lib/staticky/server.rb +5 -16
- data/lib/staticky/server_plugin.rb +37 -0
- data/lib/staticky/server_plugins/live_reloading.rb +58 -0
- data/lib/staticky/utils.rb +63 -0
- data/lib/staticky/version.rb +1 -1
- data/lib/staticky.rb +23 -11
- data/site_template/.gitignore +14 -0
- data/site_template/.ruby-version +1 -1
- data/site_template/Gemfile +5 -5
- data/site_template/Procfile.dev +2 -2
- data/site_template/README.md +27 -7
- data/site_template/Rakefile +33 -2
- data/site_template/{lib/component.rb → app/views/application_component.rb} +1 -1
- data/site_template/app/views/application_layout.rb +4 -0
- data/site_template/app/views/application_page.rb +5 -0
- data/site_template/app/views/errors/not_found.rb +1 -1
- data/site_template/app/views/errors/service_error.rb +1 -1
- data/site_template/app/views/layouts/error.rb +4 -6
- data/site_template/app/views/layouts/head.rb +5 -3
- data/site_template/app/views/layouts/site.rb +10 -23
- data/site_template/app/views/pages/home.rb +1 -1
- data/site_template/app/views/ui/footer.rb +1 -1
- data/site_template/app/views/ui/navbar.rb +1 -1
- data/site_template/bin/{lint → setup} +8 -2
- data/site_template/config/boot.rb +1 -2
- data/site_template/config/puma.rb +11 -0
- data/site_template/config/staticky.rb +3 -0
- data/site_template/config/vite.json +3 -1
- data/site_template/frontend/entrypoints/application.js +0 -1
- data/site_template/frontend/tailwindcss/variable_font_plugin.js +1 -1
- data/site_template/lib/icon.rb +2 -2
- data/site_template/nginx.conf +8 -1
- data/site_template/package.json +10 -15
- data/site_template/tailwind.config.js +12 -8
- data/site_template/vite.config.ts +0 -5
- metadata +50 -11
- data/lib/staticky/container.rb +0 -26
- data/lib/staticky/router/definition.rb +0 -49
- data/lib/staticky/view_context.rb +0 -17
- data/site_template/frontend/turbo_transitions.js +0 -54
- data/site_template/lib/layout.rb +0 -4
- data/site_template/lib/page.rb +0 -11
data/lib/staticky.rb
CHANGED
@@ -1,17 +1,27 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "uri"
|
4
|
+
require "delegate"
|
5
|
+
|
3
6
|
require "phlex"
|
7
|
+
require "dry/container"
|
4
8
|
require "dry/system"
|
5
9
|
require "dry/configurable"
|
6
10
|
require "dry/logger"
|
7
|
-
require "uri"
|
8
11
|
require "tilt"
|
12
|
+
require "staticky-files"
|
9
13
|
|
10
14
|
module Staticky
|
11
15
|
GEM_ROOT = Pathname.new(__dir__).join("..").expand_path
|
12
16
|
end
|
13
17
|
|
14
|
-
require_relative "staticky/
|
18
|
+
require_relative "staticky/pluggable"
|
19
|
+
require_relative "staticky/resources/plugins"
|
20
|
+
require_relative "staticky/resources/plugins/prelude"
|
21
|
+
require_relative "staticky/resources/plugins/phlex"
|
22
|
+
require_relative "staticky/routing/plugins"
|
23
|
+
require_relative "staticky/routing/plugins/prelude"
|
24
|
+
require_relative "staticky/application"
|
15
25
|
|
16
26
|
module Staticky
|
17
27
|
# DOCS: Module for static site infrastructure such as:
|
@@ -24,28 +34,30 @@ module Staticky
|
|
24
34
|
|
25
35
|
extend Dry::Configurable
|
26
36
|
|
27
|
-
setting :env, default:
|
28
|
-
setting :build_path, default: Pathname.
|
37
|
+
setting :env, default: ENV.fetch("RACK_ENV", "development").to_sym
|
38
|
+
setting :build_path, default: Pathname(__dir__).join("..", "build")
|
29
39
|
setting :root_path, default: Pathname(__dir__)
|
30
40
|
setting :logger, default: Dry.Logger(:staticky, template: :details)
|
41
|
+
setting :live_reloading, default: true
|
31
42
|
setting :server_logger, default: Dry.Logger(
|
32
43
|
:staticky_server,
|
33
44
|
template: :details,
|
34
45
|
formatter: :rack
|
35
46
|
)
|
36
47
|
|
37
|
-
def monitor(...) =
|
38
|
-
def server_logger =config.server_logger
|
48
|
+
def monitor(...) = application.monitor(...)
|
49
|
+
def server_logger = config.server_logger
|
39
50
|
def logger = config.logger
|
40
51
|
def build_path = config.build_path
|
41
52
|
def root_path = config.root_path
|
42
53
|
def resources = router.resources
|
43
|
-
def router =
|
44
|
-
def builder =
|
45
|
-
def generator =
|
46
|
-
def
|
54
|
+
def router = application[:router]
|
55
|
+
def builder = application[:builder]
|
56
|
+
def generator = application[:generator]
|
57
|
+
def files = application[:files]
|
58
|
+
def application = Application
|
47
59
|
|
48
60
|
def env
|
49
|
-
|
61
|
+
Environment.new config.env.to_sym
|
50
62
|
end
|
51
63
|
end
|
data/site_template/.gitignore
CHANGED
@@ -9,3 +9,17 @@ node_modules
|
|
9
9
|
|
10
10
|
.bundle
|
11
11
|
/tmp/
|
12
|
+
|
13
|
+
.yarn/*
|
14
|
+
!.yarn/patches
|
15
|
+
!.yarn/plugins
|
16
|
+
!.yarn/releases
|
17
|
+
!.yarn/sdks
|
18
|
+
!.yarn/versions
|
19
|
+
|
20
|
+
# Swap the comments on the following lines if you wish to use zero-installs
|
21
|
+
# In that case, don't forget to run `yarn config set enableGlobalCache false`!
|
22
|
+
# Documentation here: https://yarnpkg.com/features/caching#zero-installs
|
23
|
+
|
24
|
+
#!.yarn/cache
|
25
|
+
.pnp.*
|
data/site_template/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.3.
|
1
|
+
3.3.5
|
data/site_template/Gemfile
CHANGED
@@ -3,8 +3,7 @@
|
|
3
3
|
source "https://rubygems.org"
|
4
4
|
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
|
5
5
|
|
6
|
-
|
7
|
-
ruby ruby_version.read.strip
|
6
|
+
ruby file: ".ruby-version"
|
8
7
|
|
9
8
|
gem "protos"
|
10
9
|
gem "protos-icon"
|
@@ -13,7 +12,6 @@ gem "protos-markdown"
|
|
13
12
|
gem "dry-inflector"
|
14
13
|
gem "front_matter_parser"
|
15
14
|
gem "rack"
|
16
|
-
gem "rackup"
|
17
15
|
gem "rake"
|
18
16
|
gem "rouge"
|
19
17
|
gem "staticky", github: "nolantait/staticky", branch: "master"
|
@@ -28,6 +26,8 @@ group :test do
|
|
28
26
|
end
|
29
27
|
|
30
28
|
group :development do
|
31
|
-
gem "
|
32
|
-
gem "
|
29
|
+
gem "filewatcher", require: false
|
30
|
+
gem "puma"
|
31
|
+
gem "rubocop"
|
32
|
+
gem "rubocop-inhouse"
|
33
33
|
end
|
data/site_template/Procfile.dev
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
server: bin/bundle exec
|
2
|
-
builder:
|
1
|
+
server: bin/bundle exec puma -C config/puma.rb
|
2
|
+
builder: bin/rake site:watch
|
3
3
|
vite: bin/vite dev
|
data/site_template/README.md
CHANGED
@@ -9,7 +9,7 @@ assets by default and hooks into the build command defined in your `Rakefile`
|
|
9
9
|
Your development server runs with `bin/dev`
|
10
10
|
|
11
11
|
Everything is ruby, there is no html or erb. It outputs a static site to the
|
12
|
-
`
|
12
|
+
`./build` folder by default, but that can be configured.
|
13
13
|
|
14
14
|
## Usage
|
15
15
|
|
@@ -36,7 +36,7 @@ Your site should not be accessible at http://localhost:9292
|
|
36
36
|
|
37
37
|
## Building
|
38
38
|
|
39
|
-
During development `
|
39
|
+
During development `filewatcher` watches your files and rebuilds the site when they
|
40
40
|
change by running `bin/rake site:build`. These files are served by a Roda app.
|
41
41
|
|
42
42
|
In production you simply output the files to a folder and serve them statically
|
@@ -46,6 +46,26 @@ can be tweaked however you like.
|
|
46
46
|
Building takes all the definitions inside your `config/routes` and outputs
|
47
47
|
static files to `./build` or wherever you have configured it.
|
48
48
|
|
49
|
+
## Development and hot reloading
|
50
|
+
|
51
|
+
By default your site will use `puma` to run a `roda` server that serves the
|
52
|
+
files inside your `Staticky.build_path` (`./build` by default).
|
53
|
+
|
54
|
+
You can access your site at:
|
55
|
+
|
56
|
+
```
|
57
|
+
http://localhost:3000
|
58
|
+
```
|
59
|
+
|
60
|
+
You can change these settings inside your `Procfile.dev` which starts the
|
61
|
+
processes required for development.
|
62
|
+
|
63
|
+
When your site triggers a rebuild and you are connected to the page. The vite
|
64
|
+
server will trigger a page reload after 500ms.
|
65
|
+
|
66
|
+
If this is too fast and you find yourself having to refresh the page yourself
|
67
|
+
you can tweak this inside your `vite.config.ts`.
|
68
|
+
|
49
69
|
## Views
|
50
70
|
|
51
71
|
Views are defined in `app/views`. They should be phlex components and you can
|
@@ -80,12 +100,12 @@ Staticky.router.define do
|
|
80
100
|
# Write your own custom logic for parsing your markdown
|
81
101
|
Dir["content/**/*.md"].each do |file|
|
82
102
|
parsed = FrontMatterParser::Parser.parse_file(file, loader:)
|
103
|
+
basenames = file.gsub("content/", "").gsub(".md", "")
|
104
|
+
front_matter = parsed.front_matter.transform_keys(&:to_sym)
|
83
105
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
front_matter: parsed.front_matter.transform_keys(&:to_sym)
|
88
|
-
)
|
106
|
+
basename.each do |path|
|
107
|
+
match path, to: Pages::Post.new(parsed.content, front_matter:)
|
108
|
+
end
|
89
109
|
end
|
90
110
|
end
|
91
111
|
```
|
data/site_template/Rakefile
CHANGED
@@ -7,12 +7,43 @@ ViteRuby.install_tasks
|
|
7
7
|
desc "Precompile assets"
|
8
8
|
task :environment do
|
9
9
|
require "./config/boot"
|
10
|
+
|
11
|
+
Staticky.application.monitor(:builder, methods: %i[call]) do |event|
|
12
|
+
Staticky.logger.info "Built site in #{event[:time]}ms"
|
13
|
+
end
|
10
14
|
end
|
11
15
|
|
12
16
|
namespace :site do
|
13
|
-
desc "
|
17
|
+
desc "Build the site and its assets into the Staticky.build_path (./build)"
|
14
18
|
task build: :environment do
|
15
|
-
|
19
|
+
Staticky.logger.info "Building site in #{Staticky.env.name} environment..."
|
16
20
|
Staticky.builder.call
|
17
21
|
end
|
22
|
+
|
23
|
+
desc "Watch the site and its assets for changes"
|
24
|
+
task watch: :environment do
|
25
|
+
require "filewatcher"
|
26
|
+
|
27
|
+
unless Staticky.build_path.join("500.html").exist?
|
28
|
+
Rake::Task["site:build"].execute
|
29
|
+
end
|
30
|
+
|
31
|
+
Staticky.logger.info "Watching site in #{Staticky.env.name} environment..."
|
32
|
+
|
33
|
+
Filewatcher.new(
|
34
|
+
[
|
35
|
+
"app/**/*.rb",
|
36
|
+
"lib/**/*.rb",
|
37
|
+
"content/**/*"
|
38
|
+
]
|
39
|
+
).watch do
|
40
|
+
Staticky.logger.info "Change detected, rebuilding site..."
|
41
|
+
sh("bin/rake site:build") do |ok, res|
|
42
|
+
unless ok
|
43
|
+
Staticky.logger.error "Error rebuilding site:"
|
44
|
+
puts res
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
18
49
|
end
|
@@ -1,12 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Layouts
|
4
|
-
class Error <
|
5
|
-
def view_template(&
|
6
|
-
|
7
|
-
|
8
|
-
section(class: "flex flex-col place-items-center gap-sm", &block)
|
9
|
-
end
|
4
|
+
class Error < Site
|
5
|
+
def view_template(&)
|
6
|
+
div(class: "grid place-items-center h-[--main-scene]") do
|
7
|
+
section(class: "flex flex-col place-items-center gap-sm", &)
|
10
8
|
end
|
11
9
|
end
|
12
10
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Layouts
|
4
|
-
class Head <
|
4
|
+
class Head < ApplicationComponent
|
5
5
|
option :title, default: -> { ::Site.title }, reader: false
|
6
6
|
option :description, default: -> { ::Site.description }, reader: false
|
7
7
|
|
@@ -44,10 +44,12 @@ module Layouts
|
|
44
44
|
meta name: "twitter:site", content: ::Site.twitter
|
45
45
|
meta name: "twitter:creator", content: ::Site.twitter
|
46
46
|
|
47
|
-
vite_client_tag unless ENV["RACK_ENV"] == "production"
|
48
47
|
javascript_tag "application"
|
49
48
|
|
50
|
-
|
49
|
+
if Staticky.env.development?
|
50
|
+
vite_client_tag
|
51
|
+
staticky_live_reload_js if Staticky.config.live_reloading
|
52
|
+
end
|
51
53
|
end
|
52
54
|
end
|
53
55
|
|
@@ -1,38 +1,25 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Layouts
|
4
|
-
class Site <
|
5
|
-
|
6
|
-
|
7
|
-
def view_template
|
4
|
+
class Site < ApplicationLayout
|
5
|
+
def around_template(&)
|
8
6
|
doctype
|
9
7
|
html lang: "en", data: { theme: "onedark" } do
|
10
|
-
|
11
|
-
|
12
|
-
body do
|
13
|
-
render UI::Navbar.new(class: css[:navbar])
|
14
|
-
main(class: css[:main], &content)
|
15
|
-
render UI::Footer.new(class: css[:footer])
|
16
|
-
end
|
8
|
+
head
|
9
|
+
body(&)
|
17
10
|
end
|
18
11
|
end
|
19
12
|
|
20
|
-
def
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
def with_content(&block)
|
25
|
-
@content = block
|
13
|
+
def view_template(&block)
|
14
|
+
render UI::Navbar.new(class: css[:navbar])
|
15
|
+
main(**attrs, &block)
|
16
|
+
render UI::Footer.new(class: css[:footer])
|
26
17
|
end
|
27
18
|
|
28
19
|
private
|
29
20
|
|
30
|
-
def
|
31
|
-
|
32
|
-
end
|
33
|
-
|
34
|
-
def head
|
35
|
-
@head || proc {}
|
21
|
+
def head(&block)
|
22
|
+
render Head.new(&block)
|
36
23
|
end
|
37
24
|
end
|
38
25
|
end
|
@@ -13,6 +13,12 @@ FileUtils.chdir APP_ROOT do
|
|
13
13
|
# This script is idempotent, so that you can run it at any time and get an expectable outcome.
|
14
14
|
# Add necessary setup steps to this file.
|
15
15
|
|
16
|
-
puts "==
|
17
|
-
system! "
|
16
|
+
puts "== Installing dependencies =="
|
17
|
+
system! "gem install bundler --conservative"
|
18
|
+
system("bundle check") || system!("bundle install")
|
19
|
+
|
20
|
+
system! "bundle binstubs --force bundler rubocop rspec-core vite_ruby rake"
|
21
|
+
|
22
|
+
puts "\n== Installing javascript dependencies =="
|
23
|
+
system! "yarn install"
|
18
24
|
end
|
@@ -5,13 +5,12 @@ ENV["RACK_ENV"] ||= "development"
|
|
5
5
|
require "bundler"
|
6
6
|
Bundler.require(:default, ENV.fetch("RACK_ENV", nil))
|
7
7
|
|
8
|
-
require_relative "staticky"
|
9
|
-
|
10
8
|
loader = Zeitwerk::Loader.new
|
11
9
|
loader.inflector.inflect("ui" => "UI")
|
12
10
|
loader.push_dir("lib")
|
13
11
|
loader.push_dir("app/views")
|
14
12
|
loader.setup
|
15
13
|
|
14
|
+
require_relative "staticky"
|
16
15
|
require_relative "site"
|
17
16
|
require_relative "routes"
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Run in single threaded mode
|
4
|
+
threads 0, 1
|
5
|
+
|
6
|
+
# Specifies the `port` that Puma will listen on to receive requests; default is
|
7
|
+
# 3000.
|
8
|
+
port 3000
|
9
|
+
|
10
|
+
# Only use a pidfile when requested
|
11
|
+
pidfile ENV["PIDFILE"] if ENV["PIDFILE"]
|
@@ -1,7 +1,7 @@
|
|
1
1
|
// This is a custom plugin for Tailwind CSS to enable font-variation-settings
|
2
2
|
import plugin from "tailwindcss/plugin";
|
3
3
|
|
4
|
-
const fontVariationSettings = plugin(function
|
4
|
+
const fontVariationSettings = plugin(function({ addUtilities }) {
|
5
5
|
addUtilities({
|
6
6
|
".font-thin": {
|
7
7
|
fontWeight: 100,
|
data/site_template/lib/icon.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
class Icon <
|
3
|
+
class Icon < ApplicationComponent
|
4
4
|
param :name, reader: false
|
5
|
-
option :variant, reader: false, default: -> {}
|
5
|
+
option :variant, reader: false, default: -> { }
|
6
6
|
option :size, default: -> { :md }, reader: false
|
7
7
|
|
8
8
|
def template
|
data/site_template/nginx.conf
CHANGED
@@ -28,9 +28,16 @@ http {
|
|
28
28
|
port_in_redirect off;
|
29
29
|
add_header X-Content-Type-Options "nosniff";
|
30
30
|
|
31
|
+
location = / {
|
32
|
+
try_files /index.html =404;
|
33
|
+
}
|
34
|
+
|
31
35
|
location / {
|
32
|
-
|
36
|
+
rewrite ^/(.*)/$ /$1 permanent;
|
37
|
+
|
38
|
+
try_files $uri $uri.html =404;
|
33
39
|
expires 1h;
|
40
|
+
error_page 404 /404.html;
|
34
41
|
}
|
35
42
|
|
36
43
|
location ~* \.(?:ico|gif|jpe?g|png|svg|webp)$ {
|
data/site_template/package.json
CHANGED
@@ -11,21 +11,16 @@
|
|
11
11
|
"author": "",
|
12
12
|
"license": "ISC",
|
13
13
|
"dependencies": {
|
14
|
-
"@fontsource-variable/inter": "^5.0
|
14
|
+
"@fontsource-variable/inter": "^5.1.0",
|
15
15
|
"@hotwired/stimulus": "^3.2.2",
|
16
|
-
"@hotwired/turbo": "^8.0.
|
17
|
-
"@tailwindcss/typography": "^0.5.
|
16
|
+
"@hotwired/turbo": "^8.0.12",
|
17
|
+
"@tailwindcss/typography": "^0.5.15",
|
18
18
|
"autoprefixer": "^10.4.20",
|
19
|
-
"daisyui": "^4.12.
|
20
|
-
"
|
21
|
-
"
|
22
|
-
"tailwindcss": "^3.4.
|
23
|
-
"vite": "^
|
24
|
-
"vite-plugin-ruby": "^5.
|
25
|
-
|
26
|
-
},
|
27
|
-
"optionalDependencies": {
|
28
|
-
"@rollup/rollup-linux-arm64-musl": "4.20.0"
|
29
|
-
},
|
30
|
-
"packageManager": "yarn@1.22.22+sha1.ac34549e6aa8e7ead463a7407e1c7390f61a6610"
|
19
|
+
"daisyui": "^4.12.20",
|
20
|
+
"postcss": "^8.4.49",
|
21
|
+
"protos-stimulus": "^0.0.4",
|
22
|
+
"tailwindcss": "^3.4.16",
|
23
|
+
"vite": "^6.0.3",
|
24
|
+
"vite-plugin-ruby": "^5.1.1"
|
25
|
+
}
|
31
26
|
}
|
@@ -1,12 +1,15 @@
|
|
1
1
|
import defaultTheme from "tailwindcss/defaultTheme"
|
2
|
+
import daisyui from "daisyui"
|
3
|
+
import typography from "@tailwindcss/typography"
|
4
|
+
import variableFonts from "./frontend/tailwindcss/variable_font_plugin"
|
2
5
|
|
3
6
|
// For importing tailwind styles from protos gem
|
4
|
-
|
5
|
-
const output = execSync(
|
6
|
-
const protos_path = output.trim() +
|
7
|
+
import { execSync } from "child_process"
|
8
|
+
const output = execSync("bundle show protos", { encoding: "utf-8" });
|
9
|
+
const protos_path = output.trim() + "/**/*.rb";
|
7
10
|
|
8
|
-
/** @type {import(
|
9
|
-
|
11
|
+
/** @type {import("tailwindcss").Config} */
|
12
|
+
const config = {
|
10
13
|
content: [
|
11
14
|
"./app/**/*.rb",
|
12
15
|
"./lib/**/*.rb",
|
@@ -75,9 +78,10 @@ module.exports = {
|
|
75
78
|
]
|
76
79
|
},
|
77
80
|
plugins: [
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
+
daisyui,
|
82
|
+
typography,
|
83
|
+
variableFonts
|
81
84
|
],
|
82
85
|
}
|
83
86
|
|
87
|
+
export default config
|
@@ -1,14 +1,9 @@
|
|
1
1
|
import { defineConfig } from "vite"
|
2
2
|
import RubyPlugin from "vite-plugin-ruby"
|
3
|
-
import FullReload from "vite-plugin-full-reload"
|
4
3
|
|
5
4
|
export default defineConfig({
|
6
5
|
server: { hmr: false },
|
7
6
|
plugins: [
|
8
7
|
RubyPlugin(),
|
9
|
-
FullReload(
|
10
|
-
"build/index.html",
|
11
|
-
{ delay: 0 }
|
12
|
-
),
|
13
8
|
],
|
14
9
|
})
|