From 7997138c5e8abc650f68aa6f67cc2c63fd894ebf Mon Sep 17 00:00:00 2001 From: Eric van der Vlist Date: Tue, 7 Mar 2023 20:04:06 +0100 Subject: [PATCH] Defining vite env vars with git info --- src/components/map/Map.tsx | 3 +- vite.config.ts | 174 ++++++++++++++++++++----------------- 2 files changed, 97 insertions(+), 80 deletions(-) diff --git a/src/components/map/Map.tsx b/src/components/map/Map.tsx index 48128f6..3cfafe1 100644 --- a/src/components/map/Map.tsx +++ b/src/components/map/Map.tsx @@ -157,6 +157,7 @@ const Map: Component = () => { params: { ...params, }, + lastCommit: import.meta.env.VITE_GIT_COMMIT_HASH, }); setState({ provider: params.provider, @@ -290,7 +291,7 @@ const Map: Component = () => { moveTolerance: 10, interactions: new Collection([ new DragRotate(), -// new DoubleClickZoom(), + // new DoubleClickZoom(), new DragPan(), new PinchRotate(), new PinchZoom(), diff --git a/vite.config.ts b/vite.config.ts index ca1e91f..78948d9 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -5,6 +5,7 @@ import { defineConfig } from 'vite'; import solidPlugin from 'vite-plugin-solid'; import suidPlugin from '@suid/vite-plugin'; import solidSvg from 'vite-plugin-solid-svg'; +import { execSync } from 'child_process'; // yarn add --dev @esbuild-plugins/node-globals-polyfill import { NodeGlobalsPolyfillPlugin } from '@esbuild-plugins/node-globals-polyfill'; @@ -13,85 +14,100 @@ import { NodeModulesPolyfillPlugin } from '@esbuild-plugins/node-modules-polyfil // You don't need to add this to deps, it's included by @esbuild-plugins/node-modules-polyfill import rollupNodePolyFill from 'rollup-plugin-node-polyfills'; -export default defineConfig(({ command, mode, ssrBuild }) => ({ - plugins: [ - suidPlugin(), - solidPlugin(), - solidSvg({ - /** - * If true, will export as JSX component if `as` isn't specified. - * - * Otherwise will export as url, or as JSX component if '?as=component-solid' - */ - defaultAsComponent: false, - }), - ], - test: { - environment: 'jsdom', - globals: true, - transformMode: { - web: [/\.[jt]sx?$/], +export default defineConfig(({ command, mode, ssrBuild }) => { + const commitDate = execSync('git log -1 --format=%cI').toString().trimEnd(); + const branchName = execSync('git rev-parse --abbrev-ref HEAD') + .toString() + .trimEnd(); + const commitHash = execSync('git rev-parse HEAD').toString().trimEnd(); + const lastCommitMessage = execSync('git show -s --format=%s') + .toString() + .trimEnd(); + + process.env.VITE_GIT_COMMIT_DATE = commitDate; + process.env.VITE_GIT_BRANCH_NAME = branchName; + process.env.VITE_GIT_COMMIT_HASH = commitHash; + process.env.VITE_GIT_LAST_COMMIT_MESSAGE = lastCommitMessage; + return { + plugins: [ + suidPlugin(), + solidPlugin(), + solidSvg({ + /** + * If true, will export as JSX component if `as` isn't specified. + * + * Otherwise will export as url, or as JSX component if '?as=component-solid' + */ + defaultAsComponent: false, + }), + ], + test: { + environment: 'jsdom', + globals: true, + transformMode: { + web: [/\.[jt]sx?$/], + }, + setupFiles: './setupVitest.ts', + // solid needs to be inline to work around + // a resolution issue in vitest: + deps: { + inline: [/solid-js/], + }, + // if you have few tests, try commenting one + // or both out to improve performance: + threads: false, + isolate: false, }, - setupFiles: './setupVitest.ts', - // solid needs to be inline to work around - // a resolution issue in vitest: - deps: { - inline: [/solid-js/], + build: { + target: 'esnext', + polyfillDynamicImport: false, }, - // if you have few tests, try commenting one - // or both out to improve performance: - threads: false, - isolate: false, - }, - build: { - target: 'esnext', - polyfillDynamicImport: false, - }, - resolve: { - conditions: ['development', 'browser'], - alias: { - // This Rollup aliases are extracted from @esbuild-plugins/node-modules-polyfill, - // see https://github.com/remorses/esbuild-plugins/blob/master/node-modules-polyfill/src/polyfills.ts - // process and buffer are excluded because already managed - // by node-globals-polyfill - util: 'rollup-plugin-node-polyfills/polyfills/util', - sys: 'util', - events: 'rollup-plugin-node-polyfills/polyfills/events', - stream: 'rollup-plugin-node-polyfills/polyfills/stream', - path: 'rollup-plugin-node-polyfills/polyfills/path', - querystring: 'rollup-plugin-node-polyfills/polyfills/qs', - punycode: 'rollup-plugin-node-polyfills/polyfills/punycode', - url: 'rollup-plugin-node-polyfills/polyfills/url', - string_decoder: 'rollup-plugin-node-polyfills/polyfills/string-decoder', - http: 'rollup-plugin-node-polyfills/polyfills/http', - https: 'rollup-plugin-node-polyfills/polyfills/http', - os: 'rollup-plugin-node-polyfills/polyfills/os', - assert: 'rollup-plugin-node-polyfills/polyfills/assert', - constants: 'rollup-plugin-node-polyfills/polyfills/constants', - _stream_duplex: - 'rollup-plugin-node-polyfills/polyfills/readable-stream/duplex', - _stream_passthrough: - 'rollup-plugin-node-polyfills/polyfills/readable-stream/passthrough', - _stream_readable: - 'rollup-plugin-node-polyfills/polyfills/readable-stream/readable', - _stream_writable: - 'rollup-plugin-node-polyfills/polyfills/readable-stream/writable', - _stream_transform: - 'rollup-plugin-node-polyfills/polyfills/readable-stream/transform', - timers: 'rollup-plugin-node-polyfills/polyfills/timers', - console: 'rollup-plugin-node-polyfills/polyfills/console', - vm: 'rollup-plugin-node-polyfills/polyfills/vm', - zlib: 'rollup-plugin-node-polyfills/polyfills/zlib', - tty: 'rollup-plugin-node-polyfills/polyfills/tty', - domain: 'rollup-plugin-node-polyfills/polyfills/domain', + resolve: { + conditions: ['development', 'browser'], + alias: { + // This Rollup aliases are extracted from @esbuild-plugins/node-modules-polyfill, + // see https://github.com/remorses/esbuild-plugins/blob/master/node-modules-polyfill/src/polyfills.ts + // process and buffer are excluded because already managed + // by node-globals-polyfill + util: 'rollup-plugin-node-polyfills/polyfills/util', + sys: 'util', + events: 'rollup-plugin-node-polyfills/polyfills/events', + stream: 'rollup-plugin-node-polyfills/polyfills/stream', + path: 'rollup-plugin-node-polyfills/polyfills/path', + querystring: 'rollup-plugin-node-polyfills/polyfills/qs', + punycode: 'rollup-plugin-node-polyfills/polyfills/punycode', + url: 'rollup-plugin-node-polyfills/polyfills/url', + string_decoder: 'rollup-plugin-node-polyfills/polyfills/string-decoder', + http: 'rollup-plugin-node-polyfills/polyfills/http', + https: 'rollup-plugin-node-polyfills/polyfills/http', + os: 'rollup-plugin-node-polyfills/polyfills/os', + assert: 'rollup-plugin-node-polyfills/polyfills/assert', + constants: 'rollup-plugin-node-polyfills/polyfills/constants', + _stream_duplex: + 'rollup-plugin-node-polyfills/polyfills/readable-stream/duplex', + _stream_passthrough: + 'rollup-plugin-node-polyfills/polyfills/readable-stream/passthrough', + _stream_readable: + 'rollup-plugin-node-polyfills/polyfills/readable-stream/readable', + _stream_writable: + 'rollup-plugin-node-polyfills/polyfills/readable-stream/writable', + _stream_transform: + 'rollup-plugin-node-polyfills/polyfills/readable-stream/transform', + timers: 'rollup-plugin-node-polyfills/polyfills/timers', + console: 'rollup-plugin-node-polyfills/polyfills/console', + vm: 'rollup-plugin-node-polyfills/polyfills/vm', + zlib: 'rollup-plugin-node-polyfills/polyfills/zlib', + tty: 'rollup-plugin-node-polyfills/polyfills/tty', + domain: 'rollup-plugin-node-polyfills/polyfills/domain', + }, }, - }, - define: - command === 'serve' - ? { - // By default, Vite doesn't include shims for NodeJS/ - // necessary for segment analytics lib to work - global: {}, - } - : {}, -})); + define: + command === 'serve' + ? { + // By default, Vite doesn't include shims for NodeJS/ + // necessary for segment analytics lib to work + global: {}, + } + : {}, + }; +});