From 5639a4b37cd8c2251e268dfe1320df9b0c97fa37 Mon Sep 17 00:00:00 2001
From: David Sehnal <david.sehnal@gmail.com>
Date: Wed, 22 Apr 2020 14:45:57 +0200
Subject: [PATCH] build: plugin version that does not rely on external
 variables

---
 .npmignore                |   1 +
 package-lock.json         | Bin 616979 -> 618329 bytes
 package.json              |   3 ++-
 src/mol-plugin/version.ts |  11 ++++-------
 webpack.config.common.js  |  13 ++++++++++---
 5 files changed, 17 insertions(+), 11 deletions(-)
 create mode 100644 .npmignore

diff --git a/.npmignore b/.npmignore
new file mode 100644
index 000000000..37565e32b
--- /dev/null
+++ b/.npmignore
@@ -0,0 +1 @@
+tsconfig.servers.buildinfo
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index b50d0f80ee302c08a7b65bfc6250b8a1b27b799e..77db567828aaa3e147807aed27370485c39056e9 100644
GIT binary patch
delta 1123
zcmZuwZA@EL7|uQS-rieQJ}fL!AY1J~6l{CTr9k<y(b5m0^aE^ZKr>h17H->hg?>>?
zOi4_tKNjbj@EQ#n(;wRsGcc2!EV_*SQd~xw#Vx_e)a;+h4E|V*i4t$CrcQT$z0Y~x
z^FHr+-g64ywCz4<%e_T>hR#+O_9vc&jaqaFU#&(b=?c`=qw6iO)s9s7K#%s0!MOo>
zGi<z#8lbpC-T|*0QTSUQTA3{5wi|JN9bG5NQQ%YbjtSIvQ6v8KC$y!6=eCF@*tZiD
zVS-x+h*yLYdaYgvC$wEUBmD9j)8=;!51Iw5#Tgp2%|<NA*@cN$LZ-RVtSRD~;^%~D
znp<+rEX~ikdPQ?2&}TR6C+()*@loqk#x7=te0{Fbkr9tz9FKY@J+}0uc|PekL+}mq
z1&sedM{X3(yBljb9j7yB6T)<AK}=?0IZyJ3OPz!g+W%0`{7h(6v9xb`BG|>x^mW_x
zL*0Rq@y_hLNf@1h_dX!oA@h~29v;|81^mV`y}09Za<RVRQC{*07k8)+cO_5S@Vl4k
z6Lf_wIk;IU?)AW$O|}Qck7*g)zChRGy><GU4RVy^-KEF0xfeK&Y{xZP*+b<&b*2bV
z)X8h$&PS9AHr}TxIFV!2CFj9&4bk{}v+Oc@id0^b!fQ6hSO@1?Xcd0sXBImCpQpg?
zW#&;sNw^V;O{5A(R+ul8WsHwsVNNOj3O6?y%O})~u#kZDTA~F`bubh-4`{wQ6)Wvd
zpIHzjZ!17+(DlHrD0Qq!ToM<p&LzPVcJZl^VUJHgmmCZBM4dq}97WIL$3fQkDsW%2
z1F(9RtpyjyD51D5qo8<+rQvETs)NWwx(c7Y!CoZFiP&|M?UXu`&S1FBD&)Z3V=bWQ
zpsK+cBIMxyj%|RojMSrhjX4B6+cFt=@3S#He~-Oi1>6-$Oe$Oj@gLaNOOS)L-`Q5k
zy+~4U^9Wgm>waVfAFOuC8AV#UpLiyw4T(_!mL2FQ)P0R87+*y^sB7h{;ok|`cr-OD
z#w0H?!c;ss9nn68UD3(f3Iis}&viy;vwV{4wwcHH_)x$)?wpQfla8p@={`N>SoB6M
zM(ZS>w)4T{V4pRRd^sbY_Ipz4nP}J+a|C@uanTnLllEb6&^6*uI|t`ICNKlh?+GU~
z{c6pd$JNrW(-}1{RadG1UYbyuI{D-;cp{@R$8r&AmIVXX4CxfDgxNfKc%@Y)J=T4a
K!MjFzfA^m>(~cbg

delta 548
zcmZ`#T}V@580LKE`_A{BO}DX=>=ZVmW{{Cg3Zx%u6@*=s21;S0fprr^7lGckM6jEM
zafGM3iA8kLN<EUk7pYiR1-V@GW5Hsvi=r-CEC_<6lVU~C-TS=n^Yik&e%t6gZ%hwp
z_gJPDZj?o^+s_Qj)v_M(7v5~K>3ZyKVGX3>?Bxbr-eNZ6Y`>g9D9LSl)5)%NBl}sm
zal-ZV&L|t#mN0qv;&y0N7NNzDY&J|Yi!3@#cc=6@>mQrJzJgAD1)g7UE<BFW>DywD
z_)U3$4!>$bWmxS*<q=;;Yh7{p0Nk&_rh#uF(duNY5wy4HLHg8el*20)JsL8W8NkyC
zW@7Xv51~?277{~z6Y3|~YAWnEhS`5(;KlS0Cff{3w#j2bWX~|0=8np9O-mB;IvA<*
zqT_Vviku4L%b2ujeNLuoe*HsNN$$Ht<EPZt<49Pt0qLR&VyG%40`F9eQnM<jEngCo
zN>KYlwXtRyN6X5jnY_|Xr_$>~$1PQdXD6kN(s#*GDyk6Xxi`gcNIx#UQoZCZs29FJ
z<gpm@VZN+VD=R^zHB#uff8Epm=;S6w^7<;I&&yUE?D8u8@LmOuAiB#m&>i7^da}dJ
GZ2Jk-c+(>Q

diff --git a/package.json b/package.json
index 1f5cd7461..1544195e5 100644
--- a/package.json
+++ b/package.json
@@ -115,7 +115,8 @@
     "ts-jest": "^25.4.0",
     "typescript": "^3.8.3",
     "webpack": "^4.42.1",
-    "webpack-cli": "^3.3.11"
+    "webpack-cli": "^3.3.11",
+    "webpack-version-file-plugin": "^0.4.0"
   },
   "dependencies": {
     "@material-ui/core": "^4.9.10",
diff --git a/src/mol-plugin/version.ts b/src/mol-plugin/version.ts
index 949807afa..b42aab3e0 100644
--- a/src/mol-plugin/version.ts
+++ b/src/mol-plugin/version.ts
@@ -5,11 +5,8 @@
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
  */
 
-/** version from package.json, to be filled in at bundle build time */
-declare const __VERSION__: string;
-export const PLUGIN_VERSION = __VERSION__;
+/** version from package.json, to be filled in at build time */
+export const PLUGIN_VERSION = '';
 
-/** unix time stamp, to be filled in at bundle build time */
-declare const __VERSION_TIMESTAMP__: number;
-export const PLUGIN_VERSION_TIMESTAMP = __VERSION_TIMESTAMP__;
-export const PLUGIN_VERSION_DATE = new Date(PLUGIN_VERSION_TIMESTAMP);
\ No newline at end of file
+/** to be filled in at build time */
+export const PLUGIN_VERSION_DATE = +new Date();
\ No newline at end of file
diff --git a/webpack.config.common.js b/webpack.config.common.js
index 2365f4b86..f062c5b85 100644
--- a/webpack.config.common.js
+++ b/webpack.config.common.js
@@ -2,6 +2,7 @@ const path = require('path');
 const webpack = require('webpack');
 const ExtraWatchWebpackPlugin = require('extra-watch-webpack-plugin');
 const MiniCssExtractPlugin = require('mini-css-extract-plugin');
+const VersionFile = require('webpack-version-file-plugin');
 // const CircularDependencyPlugin = require('circular-dependency-plugin');
 
 const sharedConfig = {
@@ -38,11 +39,17 @@ const sharedConfig = {
             ],
         }),
         new webpack.DefinePlugin({
-            __VERSION__: webpack.DefinePlugin.runtimeValue(() => JSON.stringify(require('./package.json').version), true),
-            __VERSION_TIMESTAMP__: webpack.DefinePlugin.runtimeValue(() => `${new Date().valueOf()}`, true),
+            // __VERSION__: webpack.DefinePlugin.runtimeValue(() => JSON.stringify(require('./package.json').version), true),
+            // __VERSION_TIMESTAMP__: webpack.DefinePlugin.runtimeValue(() => `${new Date().valueOf()}`, true),
             'process.env.DEBUG': JSON.stringify(process.env.DEBUG)
         }),
-        new MiniCssExtractPlugin({ filename: 'app.css' })
+        new MiniCssExtractPlugin({ filename: 'app.css' }),
+        new VersionFile({
+            extras: { timestamp: `${new Date().valueOf()}` },
+            packageFile: path.resolve(__dirname, 'package.json'),
+            templateString: `export const PLUGIN_VERSION = '<%= package.version %>';\nexport const PLUGIN_VERSION_DATE = new Date(<%= extras.timestamp %>);`,
+            outputFile: path.resolve(__dirname, 'lib/mol-plugin/version.js')
+        })
     ],
     resolve: {
         modules: [
-- 
GitLab