diff --git a/Gemfile b/Gemfile
index 2668f275..965ccef1 100644
--- a/Gemfile
+++ b/Gemfile
@@ -4,6 +4,7 @@ ruby "3.0.4"
gem "autoprefixer-rails"
gem "bullet"
+gem "cssbundling-rails"
gem "dotenv-rails"
gem "flutie"
gem "high_voltage"
@@ -11,7 +12,6 @@ gem "image_processing"
gem "jbuilder"
gem "jsbundling-rails"
gem "kaminari"
-gem "normalize-rails"
gem "oath"
gem "pg"
gem "puma"
diff --git a/Gemfile.lock b/Gemfile.lock
index 271ff1f9..df6fab74 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -107,6 +107,8 @@ GEM
crack (0.4.5)
rexml
crass (1.0.6)
+ cssbundling-rails (1.1.1)
+ railties (>= 6.0.0)
database_cleaner (2.0.1)
database_cleaner-active_record (~> 2.0.0)
database_cleaner-active_record (2.0.1)
@@ -205,7 +207,6 @@ GEM
racc (~> 1.4)
nokogiri (1.13.7-x86_64-linux)
racc (~> 1.4)
- normalize-rails (8.0.1)
oath (1.1.0)
bcrypt
rails
@@ -315,7 +316,7 @@ GEM
simplecov-html (0.12.3)
simplecov_json_formatter (0.1.3)
smart_properties (1.17.0)
- sprockets (4.0.2)
+ sprockets (4.1.1)
concurrent-ruby (~> 1.0)
rack (> 1, < 3)
sprockets-rails (3.4.2)
@@ -366,6 +367,7 @@ DEPENDENCIES
bullet
bundler-audit
capybara-selenium
+ cssbundling-rails
database_cleaner
dotenv-rails
factory_bot_rails
@@ -378,7 +380,6 @@ DEPENDENCIES
jsbundling-rails
kaminari
launchy
- normalize-rails
oath
pg
pry-byebug
diff --git a/Procfile.dev b/Procfile.dev
index 03c54b1d..2b0b260f 100644
--- a/Procfile.dev
+++ b/Procfile.dev
@@ -1,2 +1,3 @@
web: bin/rails server -p 3000
js: yarn build --watch
+css: yarn build:css --watch
diff --git a/app/assets/builds/.keep b/app/assets/builds/.keep
new file mode 100644
index 00000000..e69de29b
diff --git a/app/assets/entry_points/blog.js b/app/assets/entry_points/blog.js
deleted file mode 100644
index e2104f51..00000000
--- a/app/assets/entry_points/blog.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import "../javascripts/detector";
-
-import "../stylesheets/blog.scss";
diff --git a/app/assets/stylesheets/_hotline_webring.scss b/app/assets/stylesheets/_hotline_webring.scss
index b836924d..0b8b49ac 100644
--- a/app/assets/stylesheets/_hotline_webring.scss
+++ b/app/assets/stylesheets/_hotline_webring.scss
@@ -27,12 +27,12 @@ section.hotline-webring {
}
a.previous {
- background-image: url("../images/hlwr-prev.svg");
+ background-image: url("hlwr-prev.svg");
background-position: center left;
}
a.next {
- background-image: url("../images/hlwr-next.svg");
+ background-image: url("hlwr-next.svg");
background-position: center right;
}
}
diff --git a/app/assets/stylesheets/_ie.scss b/app/assets/stylesheets/_ie.scss
index 941413d0..0e5a33aa 100644
--- a/app/assets/stylesheets/_ie.scss
+++ b/app/assets/stylesheets/_ie.scss
@@ -1,6 +1,6 @@
body.ie {
header {
- background: url("../images/logo.gif") no-repeat center;
+ background: url("logo.gif") no-repeat center;
}
header h1 {
diff --git a/app/assets/stylesheets/_songs.scss b/app/assets/stylesheets/_songs.scss
index 93ed217b..ac7994db 100644
--- a/app/assets/stylesheets/_songs.scss
+++ b/app/assets/stylesheets/_songs.scss
@@ -40,8 +40,7 @@ div.player {
}
a.button {
- background: var(--button-color) url("../images/play.svg") no-repeat center
- center;
+ background: var(--button-color) url("play.svg") no-repeat center center;
border: 2px solid var(--song-progress-color);
border-radius: 50%;
box-sizing: border-box;
@@ -54,7 +53,7 @@ div.player {
}
a.button.playing {
- background-image: url("../images/pause.svg");
+ background-image: url("pause.svg");
}
span.remaining {
diff --git a/app/assets/stylesheets/admin/admin.scss b/app/assets/stylesheets/admin/admin.scss
index 628e969d..acec6223 100644
--- a/app/assets/stylesheets/admin/admin.scss
+++ b/app/assets/stylesheets/admin/admin.scss
@@ -3,7 +3,6 @@
@use "sass:math";
@import "../reset";
-@import "normalize.css";
@import "variables";
@import "base";
diff --git a/app/assets/entry_points/admin.js b/app/javascript/admin.js
similarity index 53%
rename from app/assets/entry_points/admin.js
rename to app/javascript/admin.js
index ab820c4f..726bcbf3 100644
--- a/app/assets/entry_points/admin.js
+++ b/app/javascript/admin.js
@@ -3,6 +3,4 @@ import Rails from "@rails/ujs";
Rails.start();
require("@rails/activestorage").start();
-import "../javascripts/draggable";
-
-import "../stylesheets/admin/admin.scss";
+import "../assets/javascripts/draggable";
diff --git a/app/javascript/application.js b/app/javascript/application.js
new file mode 100644
index 00000000..03c453ca
--- /dev/null
+++ b/app/javascript/application.js
@@ -0,0 +1,3 @@
+import "../assets/javascripts/detector";
+import "../assets/javascripts/scrollDown";
+import "../assets/javascripts/song";
diff --git a/app/javascript/blog.js b/app/javascript/blog.js
new file mode 100644
index 00000000..8ed55c17
--- /dev/null
+++ b/app/javascript/blog.js
@@ -0,0 +1 @@
+import "../assets/javascripts/detector";
diff --git a/app/views/layouts/admin.html.erb b/app/views/layouts/admin.html.erb
index aa1051b7..dd9c6693 100644
--- a/app/views/layouts/admin.html.erb
+++ b/app/views/layouts/admin.html.erb
@@ -9,7 +9,7 @@
<%= title %>
<%= favicon_link_tag('favicon.png') %>
- <%= stylesheet_link_tag :admin, "data-turbo-track": "reload", defer: true %>
+ <%= stylesheet_link_tag "admin/admin", "data-turbo-track": "reload", defer: true %>
<%= javascript_include_tag :admin, "data-turbo-track": "reload", defer: true %>
<%= csrf_meta_tags %>
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb
index 59fe48b8..048b2ba3 100644
--- a/app/views/layouts/application.html.erb
+++ b/app/views/layouts/application.html.erb
@@ -17,6 +17,7 @@
<%= stylesheet_link_tag :application, "data-turbo-track": "reload", defer: true %>
<%= javascript_include_tag :application, "data-turbo-track": "reload", defer: true %>
<%= csrf_meta_tags %>
+ <%= stylesheet_link_tag "application" %>
<%= render 'header' %>
diff --git a/bin/assets b/bin/assets
deleted file mode 100755
index 4165ca2b..00000000
--- a/bin/assets
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/env node
-
-const sassPlugin = require("esbuild-sass-plugin").sassPlugin;
-
-let watch = process.argv.includes("--watch");
-let minify = process.argv.includes("--minify");
-let sourcemap = true;
-const prod = process.argv.includes("prod");
-
-if (watch) {
- watch = {
- onRebuild(error, result) {
- if (error) console.error("Build failed:", error);
- else console.log("Built");
- },
- };
-}
-
-if (prod) {
- watch = false;
- minify = false;
- sourcemap = false;
-}
-
-console.log("Building...");
-require("esbuild")
- .build({
- bundle: true,
- loader: { ".gif": "file", ".svg": "file" },
- entryPoints: [
- "app/assets/entry_points/application.js",
- "app/assets/entry_points/blog.js",
- "app/assets/entry_points/admin.js",
- ],
- minify,
- outdir: "app/assets/builds",
- plugins: [sassPlugin()],
- sourcemap,
- watch,
- })
- .catch(() => process.exit(1));
diff --git a/bin/dev b/bin/dev
index a1104a50..c1cb98b0 100755
--- a/bin/dev
+++ b/bin/dev
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
-if ! command -v foreman &> /dev/null
+if ! foreman version &> /dev/null
then
echo "Installing foreman..."
gem install foreman
diff --git a/config/environments/production.rb b/config/environments/production.rb
index 803a641f..e8bed31e 100644
--- a/config/environments/production.rb
+++ b/config/environments/production.rb
@@ -29,6 +29,7 @@
# Do not fallback to assets pipeline if a precompiled asset is missed.
config.assets.compile = false
+ config.assets.resolve_assets_in_css_urls = true
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
# config.asset_host = "http://assets.example.com"
diff --git a/package.json b/package.json
index 945e561d..89377bb1 100644
--- a/package.json
+++ b/package.json
@@ -4,12 +4,12 @@
"@rails/activestorage": "^6.0.3-3",
"@rails/ujs": "^6.0.3-3",
"esbuild": "^0.14.28",
- "esbuild-sass-plugin": "^2.2.5",
- "normalize.css": "^8.0.1",
+ "sass": "^1.54.3",
"webpack-jquery-ui": "^2.0.1"
},
"devDependencies": {},
"scripts": {
- "build": "bin/assets"
+ "build": "esbuild app/javascript/*.* --bundle --sourcemap --outdir=app/assets/builds --public-path=assets",
+ "build:css": "sass ./app/assets/stylesheets:./app/assets/builds --no-source-map --load-path=node_modules"
}
}
diff --git a/yarn.lock b/yarn.lock
index 6de9a04c..2876d162 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -243,14 +243,6 @@ esbuild-openbsd-64@0.14.28:
resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.28.tgz#9d7b0ca421ae580ab945c69c33eabd793262a84c"
integrity sha512-HBv18rVapbuDx52/fhZ/c/w6TXyaQAvRxiDDn5Hz/pBcwOs3cdd2WxeIKlWmDoqm2JMx5EVlq4IWgoaRX9mVkw==
-esbuild-sass-plugin@^2.2.5:
- version "2.2.5"
- resolved "https://registry.yarnpkg.com/esbuild-sass-plugin/-/esbuild-sass-plugin-2.2.5.tgz#2016cdbfe9f192129c5adcdfeaac8d87fd8bc7d8"
- integrity sha512-AoKHFu/qKPxyo2bLzqP4/n+27f/1acO4dHsUeqRVflEgnUqis6+pPdoS2nLhmC6sPwIwzK0C8bQ0A4Bt30qkeg==
- dependencies:
- esbuild "^0.14.13"
- sass "^1.49.0"
-
esbuild-sunos-64@0.14.28:
version "0.14.28"
resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.28.tgz#5b82807ebe435519a2689e1a4d50b8a3cc5c64c0"
@@ -271,7 +263,7 @@ esbuild-windows-arm64@0.14.28:
resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.28.tgz#c527d52ec7d1f868259d0f74ecc4003e8475125d"
integrity sha512-VhXGBTo6HELD8zyHXynV6+L2jWx0zkKnGx4TmEdSBK7UVFACtOyfUqpToG0EtnYyRZ0HESBhzPSVpP781ovmvA==
-esbuild@^0.14.13, esbuild@^0.14.28:
+esbuild@^0.14.28:
version "0.14.28"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.28.tgz#7738635d2ea19e446bd319d83a1802545e6aebb8"
integrity sha512-YLNprkCcMVKQ5sekmCKEQ3Obu/L7s6+iij38xNKyBeSmSsTWur4Ky/9zB3XIGT8SCJITG/bZwAR2l7YOAXch4Q==
@@ -455,11 +447,6 @@ normalize-path@^3.0.0, normalize-path@~3.0.0:
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
-normalize.css@^8.0.1:
- version "8.0.1"
- resolved "https://registry.yarnpkg.com/normalize.css/-/normalize.css-8.0.1.tgz#9b98a208738b9cc2634caacbc42d131c97487bf3"
- integrity sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==
-
picomatch@^2.0.4, picomatch@^2.2.1:
version "2.3.1"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
@@ -522,10 +509,10 @@ readdirp@~3.6.0:
dependencies:
picomatch "^2.2.1"
-sass@^1.49.0:
- version "1.49.9"
- resolved "https://registry.yarnpkg.com/sass/-/sass-1.49.9.tgz#b15a189ecb0ca9e24634bae5d1ebc191809712f9"
- integrity sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A==
+sass@^1.54.3:
+ version "1.54.3"
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.3.tgz#37baa2652f7f1fdadb73240ee9a2b9b81fabb5c4"
+ integrity sha512-fLodey5Qd41Pxp/Tk7Al97sViYwF/TazRc5t6E65O7JOk4XF8pzwIW7CvCxYVOfJFFI/1x5+elDyBIixrp+zrw==
dependencies:
chokidar ">=3.0.0 <4.0.0"
immutable "^4.0.0"