refactor: switch to sass-embedded and remove manual install

Signed-off-by: Sped0n <hi@sped0n.com>
This commit is contained in:
Sped0n
2025-11-12 04:27:15 +08:00
committed by Ryan
parent 99a2866d4a
commit 304abf3b65
5 changed files with 255 additions and 33 deletions

View File

@@ -58,9 +58,6 @@ jobs:
hugo-version: ${{ matrix.hugo-version }}
extended: true
- name: Setup Dart Sass
run: sudo snap install dart-sass
- name: Setup pnpm
uses: pnpm/action-setup@v3
with:
@@ -91,8 +88,7 @@ jobs:
- name: Build
run: |
pnpm run vite:build
hugo --logLevel info --source=exampleSite --gc --minify
pnpm run build
- name: Push artifacts
if: >

View File

@@ -27,7 +27,6 @@
packages = with pkgs; [
nodejs
nodePackages.pnpm
dart-sass
hugo
go
];

View File

@@ -53,7 +53,7 @@
"prettier": "3.6.2",
"prettier-plugin-go-template": "^0.0.15",
"prettier-plugin-organize-imports": "^4.3.0",
"sass": "^1.94.0",
"sass-embedded": "^1.93.3",
"typescript": "^5.9.3",
"vite": "^7.2.2",
"vite-plugin-solid": "^2.11.10"

264
pnpm-lock.yaml generated
View File

@@ -61,15 +61,15 @@ devDependencies:
prettier-plugin-organize-imports:
specifier: ^4.3.0
version: 4.3.0(prettier@3.6.2)(typescript@5.9.3)
sass:
specifier: ^1.94.0
version: 1.94.0
sass-embedded:
specifier: ^1.93.3
version: 1.93.3
typescript:
specifier: ^5.9.3
version: 5.9.3
vite:
specifier: ^7.2.2
version: 7.2.2(@types/node@24.10.0)(sass@1.94.0)
version: 7.2.2(@types/node@24.10.0)(sass-embedded@1.93.3)
vite-plugin-solid:
specifier: ^2.11.10
version: 2.11.10(solid-js@1.9.10)(vite@7.2.2)
@@ -249,6 +249,10 @@ packages:
'@babel/helper-validator-identifier': 7.28.5
dev: true
/@bufbuild/protobuf@2.10.0:
resolution: {integrity: sha512-fdRs9PSrBF7QUntpZpq6BTw58fhgGJojgg39m9oFOJGZT+nip9b0so5cYY1oWl5pvemDLr0cPPsH46vwThEbpQ==}
dev: true
/@emnapi/core@1.7.0:
resolution: {integrity: sha512-pJdKGq/1iquWYtv1RRSljZklxHCOCAJFJrImO5ZLKPJVJlVUcs8yFwNQlqS0Lo8xT1VAXXTCZocF9n26FWEKsw==}
requiresBuild: true
@@ -1536,6 +1540,10 @@ packages:
update-browserslist-db: 1.1.4(browserslist@4.28.0)
dev: true
/buffer-builder@0.2.0:
resolution: {integrity: sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==}
dev: true
/call-bind-apply-helpers@1.0.2:
resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
engines: {node: '>= 0.4'}
@@ -1591,9 +1599,11 @@ packages:
/chokidar@4.0.3:
resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
engines: {node: '>= 14.16.0'}
requiresBuild: true
dependencies:
readdirp: 4.1.2
dev: true
optional: true
/color-convert@1.9.3:
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
@@ -1616,6 +1626,10 @@ packages:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
dev: true
/colorjs.io@0.5.2:
resolution: {integrity: sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==}
dev: true
/concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
dev: true
@@ -3235,7 +3249,9 @@ packages:
/readdirp@4.1.2:
resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
engines: {node: '>= 14.18.0'}
requiresBuild: true
dev: true
optional: true
/reflect.getprototypeof@1.0.10:
resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
@@ -3325,6 +3341,12 @@ packages:
queue-microtask: 1.2.3
dev: true
/rxjs@7.8.2:
resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==}
dependencies:
tslib: 2.8.1
dev: true
/safe-array-concat@1.1.3:
resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
engines: {node: '>=0.4'}
@@ -3353,10 +3375,207 @@ packages:
is-regex: 1.2.1
dev: true
/sass@1.94.0:
resolution: {integrity: sha512-Dqh7SiYcaFtdv5Wvku6QgS5IGPm281L+ZtVD1U2FJa7Q0EFRlq8Z3sjYtz6gYObsYThUOz9ArwFqPZx+1azILQ==}
/sass-embedded-all-unknown@1.93.3:
resolution: {integrity: sha512-3okGgnE41eg+CPLtAPletu6nQ4N0ij7AeW+Sl5Km4j29XcmqZQeFwYjHe1AlKTEgLi/UAONk1O8i8/lupeKMbw==}
cpu: ['!arm', '!arm64', '!riscv64', '!x64']
requiresBuild: true
dependencies:
sass: 1.93.3
dev: true
optional: true
/sass-embedded-android-arm64@1.93.3:
resolution: {integrity: sha512-uqUl3Kt1IqdGVAcAdbmC+NwuUJy8tM+2ZnB7/zrt6WxWVShVCRdFnWR9LT8HJr7eJN7AU8kSXxaVX/gedanPsg==}
engines: {node: '>=14.0.0'}
cpu: [arm64]
os: [android]
requiresBuild: true
dev: true
optional: true
/sass-embedded-android-arm@1.93.3:
resolution: {integrity: sha512-8xOw9bywfOD6Wv24BgCmgjkk6tMrsOTTHcb28KDxeJtFtoxiUyMbxo0vChpPAfp2Hyg2tFFKS60s0s4JYk+Raw==}
engines: {node: '>=14.0.0'}
cpu: [arm]
os: [android]
requiresBuild: true
dev: true
optional: true
/sass-embedded-android-riscv64@1.93.3:
resolution: {integrity: sha512-2jNJDmo+3qLocjWqYbXiBDnfgwrUeZgZFHJIwAefU7Fn66Ot7rsXl+XPwlokaCbTpj7eMFIqsRAZ/uDueXNCJg==}
engines: {node: '>=14.0.0'}
cpu: [riscv64]
os: [android]
requiresBuild: true
dev: true
optional: true
/sass-embedded-android-x64@1.93.3:
resolution: {integrity: sha512-y0RoAU6ZenQFcjM9PjQd3cRqRTjqwSbtWLL/p68y2oFyh0QGN0+LQ826fc0ZvU/AbqCsAizkqjzOn6cRZJxTTQ==}
engines: {node: '>=14.0.0'}
cpu: [x64]
os: [android]
requiresBuild: true
dev: true
optional: true
/sass-embedded-darwin-arm64@1.93.3:
resolution: {integrity: sha512-7zb/hpdMOdKteK17BOyyypemglVURd1Hdz6QGsggy60aUFfptTLQftLRg8r/xh1RbQAUKWFbYTNaM47J9yPxYg==}
engines: {node: '>=14.0.0'}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
/sass-embedded-darwin-x64@1.93.3:
resolution: {integrity: sha512-Ek1Vp8ZDQEe327Lz0b7h3hjvWH3u9XjJiQzveq74RPpJQ2q6d9LfWpjiRRohM4qK6o4XOHw1X10OMWPXJtdtWg==}
engines: {node: '>=14.0.0'}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
/sass-embedded-linux-arm64@1.93.3:
resolution: {integrity: sha512-RBrHWgfd8Dd8w4fbmdRVXRrhh8oBAPyeWDTKAWw8ZEmuXfVl4ytjDuyxaVilh6rR1xTRTNpbaA/YWApBlLrrNw==}
engines: {node: '>=14.0.0'}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/sass-embedded-linux-arm@1.93.3:
resolution: {integrity: sha512-yeiv2y+dp8B4wNpd3+JsHYD0mvpXSfov7IGyQ1tMIR40qv+ROkRqYiqQvAOXf76Qwh4Y9OaYZtLpnsPjfeq6mA==}
engines: {node: '>=14.0.0'}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: true
optional: true
/sass-embedded-linux-musl-arm64@1.93.3:
resolution: {integrity: sha512-PS829l+eUng+9W4PFclXGb4uA2+965NHV3/Sa5U7qTywjeeUUYTZg70dJHSqvhrBEfCc2XJABeW3adLJbyQYkw==}
engines: {node: '>=14.0.0'}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/sass-embedded-linux-musl-arm@1.93.3:
resolution: {integrity: sha512-fU0fwAwbp7sBE3h5DVU5UPzvaLg7a4yONfFWkkcCp6ZrOiPuGRHXXYriWQ0TUnWy4wE+svsVuWhwWgvlb/tkKg==}
engines: {node: '>=14.0.0'}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: true
optional: true
/sass-embedded-linux-musl-riscv64@1.93.3:
resolution: {integrity: sha512-cK1oBY+FWQquaIGEeQ5H74KTO8cWsSWwXb/WaildOO9U6wmUypTgUYKQ0o5o/29nZbWWlM1PHuwVYTSnT23Jjg==}
engines: {node: '>=14.0.0'}
cpu: [riscv64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/sass-embedded-linux-musl-x64@1.93.3:
resolution: {integrity: sha512-A7wkrsHu2/I4Zpa0NMuPGkWDVV7QGGytxGyUq3opSXgAexHo/vBPlGoDXoRlSdex0cV+aTMRPjoGIfdmNlHwyg==}
engines: {node: '>=14.0.0'}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/sass-embedded-linux-riscv64@1.93.3:
resolution: {integrity: sha512-vWkW1+HTF5qcaHa6hO80gx/QfB6GGjJUP0xLbnAoY4pwEnw5ulGv6RM8qYr8IDhWfVt/KH+lhJ2ZFxnJareisQ==}
engines: {node: '>=14.0.0'}
cpu: [riscv64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/sass-embedded-linux-x64@1.93.3:
resolution: {integrity: sha512-k6uFxs+e5jSuk1Y0niCwuq42F9ZC5UEP7P+RIOurIm8w/5QFa0+YqeW+BPWEW5M1FqVOsNZH3qGn4ahqvAEjPA==}
engines: {node: '>=14.0.0'}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/sass-embedded-unknown-all@1.93.3:
resolution: {integrity: sha512-o5wj2rLpXH0C+GJKt/VpWp6AnMsCCbfFmnMAttcrsa+U3yrs/guhZ3x55KAqqUsE8F47e3frbsDL+1OuQM5DAA==}
os: ['!android', '!darwin', '!linux', '!win32']
requiresBuild: true
dependencies:
sass: 1.93.3
dev: true
optional: true
/sass-embedded-win32-arm64@1.93.3:
resolution: {integrity: sha512-0dOfT9moy9YmBolodwYYXtLwNr4jL4HQC9rBfv6mVrD7ud8ue2kDbn+GVzj1hEJxvEexVSmDCf7MHUTLcGs9xQ==}
engines: {node: '>=14.0.0'}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: true
optional: true
/sass-embedded-win32-x64@1.93.3:
resolution: {integrity: sha512-wHFVfxiS9hU/sNk7KReD+lJWRp3R0SLQEX4zfOnRP2zlvI2X4IQR5aZr9GNcuMP6TmNpX0nQPZTegS8+h9RrEg==}
engines: {node: '>=14.0.0'}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: true
optional: true
/sass-embedded@1.93.3:
resolution: {integrity: sha512-+VUy01yfDqNmIVMd/LLKl2TTtY0ovZN0rTonh+FhKr65mFwIYgU9WzgIZKS7U9/SPCQvWTsTGx9jyt+qRm/XFw==}
engines: {node: '>=16.0.0'}
hasBin: true
dependencies:
'@bufbuild/protobuf': 2.10.0
buffer-builder: 0.2.0
colorjs.io: 0.5.2
immutable: 5.1.4
rxjs: 7.8.2
supports-color: 8.1.1
sync-child-process: 1.0.2
varint: 6.0.0
optionalDependencies:
sass-embedded-all-unknown: 1.93.3
sass-embedded-android-arm: 1.93.3
sass-embedded-android-arm64: 1.93.3
sass-embedded-android-riscv64: 1.93.3
sass-embedded-android-x64: 1.93.3
sass-embedded-darwin-arm64: 1.93.3
sass-embedded-darwin-x64: 1.93.3
sass-embedded-linux-arm: 1.93.3
sass-embedded-linux-arm64: 1.93.3
sass-embedded-linux-musl-arm: 1.93.3
sass-embedded-linux-musl-arm64: 1.93.3
sass-embedded-linux-musl-riscv64: 1.93.3
sass-embedded-linux-musl-x64: 1.93.3
sass-embedded-linux-riscv64: 1.93.3
sass-embedded-linux-x64: 1.93.3
sass-embedded-unknown-all: 1.93.3
sass-embedded-win32-arm64: 1.93.3
sass-embedded-win32-x64: 1.93.3
dev: true
/sass@1.93.3:
resolution: {integrity: sha512-elOcIZRTM76dvxNAjqYrucTSI0teAF/L2Lv0s6f6b7FOwcwIuA357bIE871580AjHJuSvLIRUosgV+lIWx6Rgg==}
engines: {node: '>=14.0.0'}
hasBin: true
requiresBuild: true
dependencies:
chokidar: 4.0.3
immutable: 5.1.4
@@ -3364,6 +3583,7 @@ packages:
optionalDependencies:
'@parcel/watcher': 2.5.1
dev: true
optional: true
/semver@5.7.2:
resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
@@ -3625,6 +3845,13 @@ packages:
has-flag: 4.0.0
dev: true
/supports-color@8.1.1:
resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
engines: {node: '>=10'}
dependencies:
has-flag: 4.0.0
dev: true
/supports-preserve-symlinks-flag@1.0.0:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
@@ -3635,6 +3862,18 @@ packages:
engines: {node: '>= 4.7.0'}
dev: false
/sync-child-process@1.0.2:
resolution: {integrity: sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==}
engines: {node: '>=16.0.0'}
dependencies:
sync-message-port: 1.1.3
dev: true
/sync-message-port@1.1.3:
resolution: {integrity: sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==}
engines: {node: '>=16.0.0'}
dev: true
/synckit@0.11.11:
resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==}
engines: {node: ^14.18.0 || >=16.0.0}
@@ -3698,7 +3937,6 @@ packages:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
requiresBuild: true
dev: true
optional: true
/type-check@0.4.0:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
@@ -3845,6 +4083,10 @@ packages:
spdx-expression-parse: 3.0.1
dev: true
/varint@6.0.0:
resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==}
dev: true
/vite-plugin-solid@2.11.10(solid-js@1.9.10)(vite@7.2.2):
resolution: {integrity: sha512-Yr1dQybmtDtDAHkii6hXuc1oVH9CPcS/Zb2jN/P36qqcrkNnVPsMTzQ06jyzFPFjj3U1IYKMVt/9ZqcwGCEbjw==}
peerDependencies:
@@ -3861,13 +4103,13 @@ packages:
merge-anything: 5.1.7
solid-js: 1.9.10
solid-refresh: 0.6.3(solid-js@1.9.10)
vite: 7.2.2(@types/node@24.10.0)(sass@1.94.0)
vite: 7.2.2(@types/node@24.10.0)(sass-embedded@1.93.3)
vitefu: 1.1.1(vite@7.2.2)
transitivePeerDependencies:
- supports-color
dev: true
/vite@7.2.2(@types/node@24.10.0)(sass@1.94.0):
/vite@7.2.2(@types/node@24.10.0)(sass-embedded@1.93.3):
resolution: {integrity: sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
@@ -3913,7 +4155,7 @@ packages:
picomatch: 4.0.3
postcss: 8.5.6
rollup: 4.53.2
sass: 1.94.0
sass-embedded: 1.93.3
tinyglobby: 0.2.15
optionalDependencies:
fsevents: 2.3.3
@@ -3927,7 +4169,7 @@ packages:
vite:
optional: true
dependencies:
vite: 7.2.2(@types/node@24.10.0)(sass@1.94.0)
vite: 7.2.2(@types/node@24.10.0)(sass-embedded@1.93.3)
dev: true
/which-boxed-primitive@1.1.1:

View File

@@ -3,20 +3,6 @@ set -euo pipefail
node_modules_generated_dir="./node_modules/exampleSite/resources/_gen"
project_generated_dir="./exampleSite/resources/_gen"
dart_sass_version="1.93.3"
dart_sass_install_dir="${HOME}/.local/dart-sass"
dart_sass_tarball="dart-sass-${dart_sass_version}-linux-x64.tar.gz"
dart_sass_download_url="https://github.com/sass/dart-sass/releases/download/${dart_sass_version}/${dart_sass_tarball}"
install_dart_sass() {
echo "Installing Dart Sass ${dart_sass_version}..."
mkdir -p "${HOME}/.local"
curl -sSLO "${dart_sass_download_url}"
rm -rf "${dart_sass_install_dir}"
tar -C "${HOME}/.local" -xf "${dart_sass_tarball}"
rm -f "${dart_sass_tarball}"
export PATH="${dart_sass_install_dir}:${PATH}"
}
copy_generated_assets_to_project() {
if [ -d "${node_modules_generated_dir}" ]; then
@@ -44,7 +30,6 @@ copy_generated_assets_to_node_modules() {
fi
}
install_dart_sass
copy_generated_assets_to_project
run_site_build
copy_generated_assets_to_node_modules