katja's git: oeffisearch

fast and simple tripplanner

commit 50baad0fa5dcf2b80da52787f3554ef197f55b96
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(-)
M
flake.nix
|
2
+-
M
package.json
|
2
+-
M
pnpm-lock.yaml
|
36
+++++++++++++++---------------------
M
rollup.config.js
|
47
++++++++++++++++++++++++++---------------------
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/',