ソースを参照

Add version to build and the archived asar app (#854)

vanilla_orig
Lipis 5年前
コミット
d2827aa40b
コミッターのメールアドレスに関連付けられたアカウントが存在しません
3個のファイルの変更91行の追加3行の削除
  1. 49
    0
      package-lock.json
  2. 5
    3
      package.json
  3. 37
    0
      scripts/build-version.js

+ 49
- 0
package-lock.json ファイルの表示

@@ -2408,6 +2408,22 @@
2408 2408
       "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
2409 2409
       "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
2410 2410
     },
2411
+    "asar": {
2412
+      "version": "2.1.0",
2413
+      "resolved": "https://registry.npmjs.org/asar/-/asar-2.1.0.tgz",
2414
+      "integrity": "sha512-d2Ovma+bfqNpvBzY/KU8oPY67ZworixTpkjSx0PCXnQi67c2cXmssaTxpFDUM0ttopXoGx/KRxNg/GDThYbXQA==",
2415
+      "dev": true,
2416
+      "requires": {
2417
+        "@types/glob": "^7.1.1",
2418
+        "chromium-pickle-js": "^0.2.0",
2419
+        "commander": "^2.20.0",
2420
+        "cuint": "^0.2.2",
2421
+        "glob": "^7.1.3",
2422
+        "minimatch": "^3.0.4",
2423
+        "mkdirp": "^0.5.1",
2424
+        "tmp-promise": "^1.0.5"
2425
+      }
2426
+    },
2411 2427
     "asn1": {
2412 2428
       "version": "0.2.4",
2413 2429
       "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
@@ -3383,6 +3399,12 @@
3383 3399
         "tslib": "^1.9.0"
3384 3400
       }
3385 3401
     },
3402
+    "chromium-pickle-js": {
3403
+      "version": "0.2.0",
3404
+      "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz",
3405
+      "integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=",
3406
+      "dev": true
3407
+    },
3386 3408
     "ci-info": {
3387 3409
       "version": "2.0.0",
3388 3410
       "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
@@ -4183,6 +4205,12 @@
4183 4205
       "integrity": "sha512-xz39Sb4+OaTsULgUERcCk+TJj8ylkL4aSVDQiX/ksxbELSqwkgt4d4RD7fovIdgJGSuNYqwZEiVjYY5l0ask+Q==",
4184 4206
       "dev": true
4185 4207
     },
4208
+    "cuint": {
4209
+      "version": "0.2.2",
4210
+      "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz",
4211
+      "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=",
4212
+      "dev": true
4213
+    },
4186 4214
     "currently-unhandled": {
4187 4215
       "version": "0.4.1",
4188 4216
       "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
@@ -14810,6 +14838,27 @@
14810 14838
         "os-tmpdir": "~1.0.2"
14811 14839
       }
14812 14840
     },
14841
+    "tmp-promise": {
14842
+      "version": "1.1.0",
14843
+      "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-1.1.0.tgz",
14844
+      "integrity": "sha512-8+Ah9aB1IRXCnIOxXZ0uFozV1nMU5xiu7hhFVUSxZ3bYu+psD4TzagCzVbexUCgNNGJnsmNDQlS4nG3mTyoNkw==",
14845
+      "dev": true,
14846
+      "requires": {
14847
+        "bluebird": "^3.5.0",
14848
+        "tmp": "0.1.0"
14849
+      },
14850
+      "dependencies": {
14851
+        "tmp": {
14852
+          "version": "0.1.0",
14853
+          "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz",
14854
+          "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==",
14855
+          "dev": true,
14856
+          "requires": {
14857
+            "rimraf": "^2.6.3"
14858
+          }
14859
+        }
14860
+      }
14861
+    },
14813 14862
     "tmpl": {
14814 14863
       "version": "1.0.4",
14815 14864
       "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz",

+ 5
- 3
package.json ファイルの表示

@@ -15,8 +15,8 @@
15 15
     "roughjs": "4.0.4",
16 16
     "stacktrace-js": "2.0.2"
17 17
   },
18
-  "description": "",
19 18
   "devDependencies": {
19
+    "asar": "2.1.0",
20 20
     "@testing-library/jest-dom": "5.1.1",
21 21
     "@testing-library/react": "9.4.1",
22 22
     "@types/jest": "25.1.3",
@@ -80,8 +80,10 @@
80 80
   "main": "src/index.js",
81 81
   "name": "excalidraw",
82 82
   "scripts": {
83
-    "build": "react-scripts build",
84
-    "build-node": "./scripts/build-node.js",
83
+    "build:app": "react-scripts build",
84
+    "build:zip": "node ./scripts/build-version.js",
85
+    "build": "npm run build:app && npm run build:zip",
86
+    "build-node": "node ./scripts/build-node.js",
85 87
     "eject": "react-scripts eject",
86 88
     "fix": "npm run fix:other && npm run fix:code",
87 89
     "fix:code": "npm run test:code -- --fix",

+ 37
- 0
scripts/build-version.js ファイルの表示

@@ -0,0 +1,37 @@
1
+#!/usr/bin/env node
2
+
3
+const fs = require("fs");
4
+const path = require("path");
5
+const asar = require("asar");
6
+
7
+const zero = digit => `0${digit}`.slice(-2);
8
+
9
+const versionDate = date => {
10
+  const date_ = `${date.getFullYear()}-${zero(date.getMonth() + 1)}-${zero(
11
+    date.getDate(),
12
+  )}`;
13
+  const time = `${zero(date.getHours())}-${zero(date.getMinutes())}-${zero(
14
+    date.getSeconds(),
15
+  )}`;
16
+  return `${date_}-${time}`;
17
+};
18
+
19
+const now = new Date();
20
+
21
+const data = JSON.stringify(
22
+  {
23
+    app: `excalidraw-${versionDate(now)}.asar`,
24
+    version: versionDate(now),
25
+  },
26
+  undefined,
27
+  2,
28
+);
29
+
30
+fs.writeFileSync(path.join("build", "version.json"), data);
31
+
32
+(async () => {
33
+  const src = "build/";
34
+  const dest = path.join("build", `excalidraw-${versionDate(now)}.asar`);
35
+
36
+  await asar.createPackage(src, dest);
37
+})();

読み込み中…
キャンセル
保存