commit 50baad0fa5dcf2b80da52787f3554ef197f55b96
parent dbea2d6c48769c857a49ef356a556620264c9e7a
Author: Katja (ctucx) <git@ctu.cx>
Date: Thu, 17 Apr 2025 11:21:43 +0200
parent dbea2d6c48769c857a49ef356a556620264c9e7a
Author: Katja (ctucx) <git@ctu.cx>
Date: Thu, 17 Apr 2025 11:21:43 +0200
rollup: improve build process
4 files changed, 43 insertions(+), 44 deletions(-)
diff --git a/flake.nix b/flake.nix @@ -51,7 +51,7 @@ pnpmDeps = final.pnpm.fetchDeps { inherit (finalAttrs) pname version src; - hash = "sha256-u808RXrKsIWNLuG6BqtYUnWtHAWqlQsbIJho98k+HCw="; + hash = "sha256-KviT1/DynW61C59k1SaPf3WpJGTsvDbI7l0ka38Uilo="; }; env.GIT_VERSION = if (inputs.self.sourceInfo ? shortRev) then inputs.self.sourceInfo.shortRev else "dirty";
diff --git a/package.json b/package.json @@ -31,9 +31,9 @@ "rollup": "^4.40.0", "rollup-plugin-copy": "^3.5.0", "rollup-plugin-delete": "^3.0.1", + "rollup-plugin-html-literals": "^1.1.8", "rollup-plugin-ignore": "^1.0.10", "rollup-plugin-lit-css": "^5.0.2", - "rollup-plugin-minify-html-literals-v3": "^1.3.4", "rollup-plugin-modify": "^3.0.0", "rollup-plugin-summary": "^3.0.1", "rollup-plugin-workbox": "^8.1.2"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml @@ -60,15 +60,15 @@ importers: rollup-plugin-delete: specifier: ^3.0.1 version: 3.0.1(rollup@4.40.0) + rollup-plugin-html-literals: + specifier: ^1.1.8 + version: 1.1.8(rollup@4.40.0) rollup-plugin-ignore: specifier: ^1.0.10 version: 1.0.10 rollup-plugin-lit-css: specifier: ^5.0.2 version: 5.0.2(postcss@8.5.3)(rollup@4.40.0) - rollup-plugin-minify-html-literals-v3: - specifier: ^1.3.4 - version: 1.3.4 rollup-plugin-modify: specifier: ^3.0.0 version: 3.0.0 @@ -2469,15 +2469,18 @@ packages: peerDependencies: rollup: '*' + rollup-plugin-html-literals@1.1.8: + resolution: {integrity: sha512-M9KmEalEVWJ6Rk55hwmAmTdKibdvrY7LbmGLiJg+hLPUS2W1xEKgTrkucyvOov+SgE7SM37qEd4Uc5sjs3nWuQ==} + engines: {node: '>=16'} + peerDependencies: + rollup: ^1.x.x||^2.x.x||^3.x.x||^4.x.x + rollup-plugin-ignore@1.0.10: resolution: {integrity: sha512-VsbnfwwaTv2Dxl2onubetX/3RnSnplNnjdix0hvF8y2YpqdzlZrjIq6zkcuVJ08XysS8zqW3gt3ORBndFDgsrg==} rollup-plugin-lit-css@5.0.2: resolution: {integrity: sha512-nTb6YMcfWkaQIWM/5ybW6AwJTqsEtR+ukKnyIgl2UgtB+MYeOuxJcN0PHNswE2iEf/nEI67/KLX3uP/J/o/kdw==} - rollup-plugin-minify-html-literals-v3@1.3.4: - resolution: {integrity: sha512-wPHvQrm31Di7Bi5Fc/R+jogxNQYgxVojSmRVSn6gp29DTgyRlfrtaw10A29nX8g1I0JDqkQbtk2cIBweqtOCLA==} - rollup-plugin-modify@3.0.0: resolution: {integrity: sha512-p/ffs0Y2jz2dEnWjq1oVC7SY37tuS+aP7whoNaQz1EAAOPg+k3vKJo8cMMWx6xpdd0NzhX4y2YF9o/NPu5YR0Q==} @@ -2753,11 +2756,6 @@ packages: engines: {node: '>=4.2.0'} hasBin: true - typescript@5.8.3: - resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} - engines: {node: '>=14.17'} - hasBin: true - uglify-js@3.19.3: resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} engines: {node: '>=0.8.0'} @@ -5544,6 +5542,12 @@ snapshots: del: 8.0.0 rollup: 4.40.0 + rollup-plugin-html-literals@1.1.8(rollup@4.40.0): + dependencies: + '@rollup/pluginutils': 5.1.4(rollup@4.40.0) + minify-html-literals: 1.3.5 + rollup: 4.40.0 + rollup-plugin-ignore@1.0.10: {} rollup-plugin-lit-css@5.0.2(postcss@8.5.3)(rollup@4.40.0): @@ -5554,14 +5558,6 @@ snapshots: - postcss - rollup - rollup-plugin-minify-html-literals-v3@1.3.4: - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.40.0) - minify-html-literals: 1.3.5 - rollup: 4.40.0 - tslib: 2.8.1 - typescript: 5.8.3 - rollup-plugin-modify@3.0.0: dependencies: magic-string: 0.25.2 @@ -5925,8 +5921,6 @@ snapshots: typescript@4.9.5: {} - typescript@5.8.3: {} - uglify-js@3.19.3: {} unbox-primitive@1.1.0:
diff --git a/rollup.config.js b/rollup.config.js @@ -6,20 +6,23 @@ import ignore from "rollup-plugin-ignore" import modify from 'rollup-plugin-modify' import replace from '@rollup/plugin-replace'; import resolve from '@rollup/plugin-node-resolve'; -import commonjs from '@rollup/plugin-commonjs'; -import json from '@rollup/plugin-json'; -import litcss from 'rollup-plugin-lit-css'; import { rollupPluginHTML as html } from '@web/rollup-plugin-html'; import { generateSW } from 'rollup-plugin-workbox'; -import minifyHTML from 'rollup-plugin-minify-html-literals-v3'; +import commonjsImport from '@rollup/plugin-commonjs'; +import jsonImport from '@rollup/plugin-json'; +import litcssImport from 'rollup-plugin-lit-css'; +import minifyHtmlLiterals from "rollup-plugin-html-literals"; import terser from '@rollup/plugin-terser'; import summary from 'rollup-plugin-summary'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); -const appName = 'Öffisearch'; -const isDevServer = process.env.ROLLUP_WATCH; +const appName = 'Öffisearch'; +const isDevServer = process.env.ROLLUP_WATCH; +const gitVersion = process.env.GIT_VERSION; +const gitCommit = process.env.GIT_COMMIT; +const gitCommitDate = process.env.GIT_COMMITDATE export default { plugins: [ @@ -27,30 +30,36 @@ export default { targets: [ 'dist/*.js', 'dist/*.js.map' ], }), copy({ - targets: [{ src: 'src/assets/*', dest: 'dist' }] + targets: [{ src: 'src/assets/*', dest: 'dist' }] }), html({ input: 'src/index.html', - transformHtml: [html => html.replace('{{APP_NAME}}', appName)], + transformHtml: [ html => html.replace('{{APP_NAME}}', appName) ], extractAssets: false, minify: true, }), - // polyfill some modules + // Minify HTML template literals + !isDevServer && minifyHtmlLiterals(), + // stub some modules ignore([ 'http', 'url', 'tls', 'stream', 'assert', 'https-proxy-agent', 'db-hafas-stations', 'events' ]), modify({ 'import {createRequire} from \'module\';': '', 'const require = createRequire(import.meta.url);': '', + 'process.env.DEBUG': JSON.stringify(), + 'process.env.HTTPS_PROXY': JSON.stringify(), + 'process.env.HTTP_PROXY': JSON.stringify(), + 'process.env.LOCAL_ADDRESS': JSON.stringify(), }), replace({ preventAssignment: true, values: { - 'isDevServer': isDevServer, 'node:buffer': 'buffer', 'cross-fetch': path.resolve(__dirname, 'src/shim/cross-fetch.js'), + 'isDevServer': isDevServer, 'APP_NAME': JSON.stringify(appName), - 'APP_VERSION': JSON.stringify(process.env.GIT_VERSION ? process.env.GIT_VERSION : '0.0.0-dirty'), - 'APP_COMMIT': JSON.stringify(process.env.GIT_COMMIT ? process.env.GIT_COMMIT : 'unknown'), - 'APP_COMMITDATE': JSON.stringify(process.env.GIT_COMMITDATE ? process.env.GIT_COMMITDATE : (new Date).toString()), + 'APP_VERSION': JSON.stringify(gitVersion ? gitVersion : `0.0.0-${isDevServer ? 'dev' : 'prod'}`), + 'APP_COMMIT': JSON.stringify(gitCommit ? gitCommit : 'unknown'), + 'APP_COMMITDATE': JSON.stringify(gitCommitDate ? gitCommitDate : (new Date).toString()), }, }), // Resolve bare module specifiers to relative paths @@ -60,22 +69,18 @@ export default { modulePaths: [ path.resolve(__dirname, 'src/shim') ], }), // css import support for lit - litcss({ cssnano: true, }), + litcssImport({ cssnano: true, }), // commonjs imports - commonjs({ transformMixedEsModules: true }), + commonjsImport({ transformMixedEsModules: true }), // json import support - json(), - // Minify HTML template literals - //minifyHTML(), + jsonImport(), // Minify JS !isDevServer && terser({ ecma: 2021, module: true, warnings: true, - output: { - comments: false, - }, }), + // generate service-worker generateSW({ swDest: 'dist/sw.js', globDirectory: 'dist/',