瀏覽代碼

Рефакторинг

Book Pauk 6 年之前
父節點
當前提交
0ea28c27ad
共有 6 個文件被更改,包括 114 次插入187 次删除
  1. 44 0
      build/linux.js
  2. 0 69
      build/webpack.linux.config.js
  3. 0 91
      build/webpack.win.config.js
  4. 58 0
      build/win.js
  5. 8 25
      package-lock.json
  6. 4 2
      package.json

+ 44 - 0
build/linux.js

@@ -0,0 +1,44 @@
+const fs = require('fs-extra');
+const path = require('path');
+
+const download = require('download');
+const decompress = require('decompress');
+const decompressTargz = require('decompress-targz');
+
+const distDir = path.resolve(__dirname, '../dist');
+const publicDir = `${distDir}/tmp/public`;
+const outDir = `${distDir}/linux`;
+
+const tempDownloadDir = `${distDir}/tmp/download`;
+
+async function main() {
+    // перемещаем public на место
+    await fs.emptyDir(outDir);
+    await fs.move(publicDir, `${outDir}/public`);
+
+    await fs.ensureDir(tempDownloadDir);
+    // Скачиваем ipfs
+    const ipfsRemoteUrl = 'https://dist.ipfs.io/go-ipfs/v0.4.18/go-ipfs_v0.4.18_linux-amd64.tar.gz';
+
+    d = download(ipfsRemoteUrl);
+    d.pipe(fs.createWriteStream(`${tempDownloadDir}/ipfs.tar.gz`));
+    d.on('end', async() => {
+        console.log(`done downloading ${ipfsRemoteUrl}`);
+
+        //распаковываем
+        await decompress(`${tempDownloadDir}/ipfs.tar.gz`, `${tempDownloadDir}`, {
+            plugins: [
+                decompressTargz()
+            ]
+        });
+
+        console.log('files decompressed');
+        // копируем в дистрибутив
+        await fs.copy(`${tempDownloadDir}/go-ipfs/ipfs`, `${outDir}/ipfs`);
+        console.log(`copied ${tempDownloadDir}/go-ipfs/ipfs to ${outDir}/ipfs`);
+        //для development
+        await fs.copy(`${tempDownloadDir}/go-ipfs/ipfs`, path.resolve(__dirname, '../server/ipfs'));
+    });
+}
+
+main();

+ 0 - 69
build/webpack.linux.config.js

@@ -1,69 +0,0 @@
-const path = require("path");
-const webpack = require("webpack");
-
-const fs = require('fs');
-const download = require('download');
-const decompress = require('decompress');
-const decompressTargz = require('decompress-targz');
-
-const CleanWebpackPlugin = require('clean-webpack-plugin');
-const DisableOutputWebpackPlugin = require('disable-output-webpack-plugin');
-const CopyWebpackPlugin = require('copy-webpack-plugin');
-const EventHooksPlugin = require('event-hooks-webpack-plugin');
-
-const distDir = path.resolve(__dirname, '../dist');
-const publicDir = `${distDir}/tmp/public`;
-const outDir = `${distDir}/linux`;
-
-const tempDownloadDir = `${distDir}/tmp/download`;
-
-module.exports = {
-    mode: 'production',
-    entry: `${publicDir}/index.html`,
-    output: {
-        path: outDir
-    },
-    module: {
-        rules: [
-            {
-                test: /\.html$/,
-                use: 'null-loader'
-            }
-        ]
-    },
-    plugins: [
-        new CleanWebpackPlugin([outDir, tempDownloadDir], {root: distDir}),
-        new DisableOutputWebpackPlugin(),
-        new CopyWebpackPlugin([
-                { from: publicDir, to: `${outDir}/public` }
-            ]
-        ),
-        new EventHooksPlugin({
-            done: () => {
-                fs.mkdirSync(tempDownloadDir);
-                // Скачиваем ipfs
-                const ipfsRemoteUrl = 'https://dist.ipfs.io/go-ipfs/v0.4.18/go-ipfs_v0.4.18_linux-amd64.tar.gz';
-
-                d = download(ipfsRemoteUrl);
-                d.pipe(fs.createWriteStream(`${tempDownloadDir}/ipfs.tar.gz`));
-                d.on('end', () => {
-                    console.log(`done downloading ${ipfsRemoteUrl}`);
-
-                    //распаковываем
-                    decompress(`${tempDownloadDir}/ipfs.tar.gz`, `${tempDownloadDir}`, {
-                        plugins: [
-                            decompressTargz()
-                        ]
-                    }).then(() => {
-                        console.log('files decompressed');
-                        // копируем в дистрибутив
-                        fs.copyFileSync(`${tempDownloadDir}/go-ipfs/ipfs`, `${outDir}/ipfs`);
-                        console.log(`copied ${tempDownloadDir}/go-ipfs/ipfs to ${outDir}/ipfs`);
-                        //для development
-                        fs.copyFileSync(`${tempDownloadDir}/go-ipfs/ipfs`, path.resolve(__dirname, '../server/ipfs'));
-                    });
-                });
-            }
-        })
-    ]
-};

+ 0 - 91
build/webpack.win.config.js

@@ -1,91 +0,0 @@
-const path = require("path");
-const webpack = require("webpack");
-
-const fs = require('fs');
-const download = require('download');
-const decompress = require('decompress');
-const decompressTargz = require('decompress-targz');
-
-const CleanWebpackPlugin = require('clean-webpack-plugin');
-const DisableOutputWebpackPlugin = require('disable-output-webpack-plugin');
-const CopyWebpackPlugin = require('copy-webpack-plugin');
-const EventHooksPlugin = require('event-hooks-webpack-plugin');
-
-const distDir = path.resolve(__dirname, '../dist');
-const publicDir = `${distDir}/tmp/public`;
-const outDir = `${distDir}/win`;
-
-const tempDownloadDir = `${distDir}/tmp/download`;
-
-module.exports = {
-    mode: 'production',
-    entry: `${publicDir}/index.html`,
-    output: {
-        path: outDir
-    },
-    module: {
-        rules: [
-            {
-                test: /\.html$/,
-                use: 'null-loader'
-            }
-        ]
-    },
-    plugins: [
-        new CleanWebpackPlugin([outDir, tempDownloadDir], {root: distDir}),
-        new DisableOutputWebpackPlugin(),
-        new CopyWebpackPlugin([
-                { from: publicDir, to: `${outDir}/public` }
-            ]
-        ),
-        new EventHooksPlugin({
-            done: () => {
-                fs.mkdirSync(tempDownloadDir);
-
-                const sqliteRemoteUrl = 'https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v4.0.4';
-                const sqliteFile = 'node-v64-win32-x64';
-
-                const sqliteFilename = `${sqliteFile}.tar.gz`;
-                const sqliteDecompressedFilename = `${tempDownloadDir}/${sqliteFile}/node_sqlite3.node`;
-                const sqliteDistFilename = `${outDir}/node_sqlite3.node`;
-
-                // Скачиваем node_sqlite3.node для винды, т.к. pkg не включает его в сборку
-                const url = `${sqliteRemoteUrl}/${sqliteFilename}`;
-                let d = download(url);
-                d.pipe(fs.createWriteStream(`${tempDownloadDir}/${sqliteFilename}`));
-                d.on('end', () => {
-                    console.log(`done downloading ${url}`);
-
-                    //распаковываем
-                    decompress(`${tempDownloadDir}/${sqliteFilename}`, `${tempDownloadDir}`, {
-                        plugins: [
-                            decompressTargz()
-                        ]
-                    }).then(() => {
-                        console.log('files decompressed');
-                        // копируем в дистрибутив
-                        fs.copyFileSync(sqliteDecompressedFilename, sqliteDistFilename);
-                        console.log(`copied ${sqliteDecompressedFilename} to ${sqliteDistFilename}`);
-                    });
-                });
-
-                // Скачиваем ipfs
-                const ipfsRemoteUrl = 'https://dist.ipfs.io/go-ipfs/v0.4.18/go-ipfs_v0.4.18_windows-amd64.zip';
-
-                d = download(ipfsRemoteUrl);
-                d.pipe(fs.createWriteStream(`${tempDownloadDir}/ipfs.zip`));
-                d.on('end', () => {
-                    console.log(`done downloading ${ipfsRemoteUrl}`);
-
-                    //распаковываем
-                    decompress(`${tempDownloadDir}/ipfs.zip`, `${tempDownloadDir}`).then(() => {
-                        console.log('files decompressed');
-                        // копируем в дистрибутив
-                        fs.copyFileSync(`${tempDownloadDir}/go-ipfs/ipfs.exe`, `${outDir}/ipfs.exe`);
-                        console.log(`copied ${tempDownloadDir}/go-ipfs/ipfs.exe to ${outDir}/ipfs.exe`);
-                    });
-                });
-            }
-        })
-    ]
-};

+ 58 - 0
build/win.js

@@ -0,0 +1,58 @@
+const path = require('path');
+const fs = require('fs-extra');
+
+const download = require('download');
+const decompress = require('decompress');
+const decompressTargz = require('decompress-targz');
+
+const distDir = path.resolve(__dirname, '../dist');
+const publicDir = `${distDir}/tmp/public`;
+const outDir = `${distDir}/win`;
+
+const tempDownloadDir = `${distDir}/tmp/download`;
+
+async function main() {
+    // перемещаем public на место
+    await fs.emptyDir(outDir);
+    await fs.move(publicDir, `${outDir}/public`);
+
+    await fs.ensureDir(tempDownloadDir);
+    const sqliteRemoteUrl = 'https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v4.0.4/node-v64-win32-x64.tar.gz';
+    const sqliteDecompressedFilename = `${tempDownloadDir}/node-v64-win32-x64/node_sqlite3.node`;
+
+    // Скачиваем node_sqlite3.node для винды, т.к. pkg не включает его в сборку
+    let d = download(sqliteRemoteUrl);
+    d.pipe(fs.createWriteStream(`${tempDownloadDir}/sqlite.tar.gz`));
+    d.on('end', async() => {
+        console.log(`done downloading ${sqliteRemoteUrl}`);
+
+        //распаковываем
+        await decompress(`${tempDownloadDir}/sqlite.tar.gz`, `${tempDownloadDir}`, {
+            plugins: [
+                decompressTargz()
+            ]
+        });
+        console.log('files decompressed');
+        // копируем в дистрибутив
+        await fs.copy(sqliteDecompressedFilename, `${outDir}/node_sqlite3.node`);
+        console.log(`copied ${sqliteDecompressedFilename} to ${outDir}/node_sqlite3.node`);
+    });
+
+    // Скачиваем ipfs
+    const ipfsRemoteUrl = 'https://dist.ipfs.io/go-ipfs/v0.4.18/go-ipfs_v0.4.18_windows-amd64.zip';
+
+    d = download(ipfsRemoteUrl);
+    d.pipe(fs.createWriteStream(`${tempDownloadDir}/ipfs.zip`));
+    d.on('end', async() => {
+        console.log(`done downloading ${ipfsRemoteUrl}`);
+
+        //распаковываем
+        await decompress(`${tempDownloadDir}/ipfs.zip`, `${tempDownloadDir}`);
+        console.log('files decompressed');
+        // копируем в дистрибутив
+        await fs.copy(`${tempDownloadDir}/go-ipfs/ipfs.exe`, `${outDir}/ipfs.exe`);
+        console.log(`copied ${tempDownloadDir}/go-ipfs/ipfs.exe to ${outDir}/ipfs.exe`);
+    });
+}
+
+main();

+ 8 - 25
package-lock.json

@@ -4435,7 +4435,6 @@
       "version": "7.0.1",
       "version": "7.0.1",
       "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
       "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
       "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
       "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
-      "dev": true,
       "requires": {
       "requires": {
         "graceful-fs": "^4.1.2",
         "graceful-fs": "^4.1.2",
         "jsonfile": "^4.0.0",
         "jsonfile": "^4.0.0",
@@ -4508,14 +4507,12 @@
         "balanced-match": {
         "balanced-match": {
           "version": "1.0.0",
           "version": "1.0.0",
           "bundled": true,
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         },
         "brace-expansion": {
         "brace-expansion": {
           "version": "1.1.11",
           "version": "1.1.11",
           "bundled": true,
           "bundled": true,
           "dev": true,
           "dev": true,
-          "optional": true,
           "requires": {
           "requires": {
             "balanced-match": "^1.0.0",
             "balanced-match": "^1.0.0",
             "concat-map": "0.0.1"
             "concat-map": "0.0.1"
@@ -4530,20 +4527,17 @@
         "code-point-at": {
         "code-point-at": {
           "version": "1.1.0",
           "version": "1.1.0",
           "bundled": true,
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         },
         "concat-map": {
         "concat-map": {
           "version": "0.0.1",
           "version": "0.0.1",
           "bundled": true,
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         },
         "console-control-strings": {
         "console-control-strings": {
           "version": "1.1.0",
           "version": "1.1.0",
           "bundled": true,
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         },
         "core-util-is": {
         "core-util-is": {
           "version": "1.0.2",
           "version": "1.0.2",
@@ -4660,8 +4654,7 @@
         "inherits": {
         "inherits": {
           "version": "2.0.3",
           "version": "2.0.3",
           "bundled": true,
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         },
         "ini": {
         "ini": {
           "version": "1.3.5",
           "version": "1.3.5",
@@ -4673,7 +4666,6 @@
           "version": "1.0.0",
           "version": "1.0.0",
           "bundled": true,
           "bundled": true,
           "dev": true,
           "dev": true,
-          "optional": true,
           "requires": {
           "requires": {
             "number-is-nan": "^1.0.0"
             "number-is-nan": "^1.0.0"
           }
           }
@@ -4688,7 +4680,6 @@
           "version": "3.0.4",
           "version": "3.0.4",
           "bundled": true,
           "bundled": true,
           "dev": true,
           "dev": true,
-          "optional": true,
           "requires": {
           "requires": {
             "brace-expansion": "^1.1.7"
             "brace-expansion": "^1.1.7"
           }
           }
@@ -4696,14 +4687,12 @@
         "minimist": {
         "minimist": {
           "version": "0.0.8",
           "version": "0.0.8",
           "bundled": true,
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         },
         "minipass": {
         "minipass": {
           "version": "2.2.4",
           "version": "2.2.4",
           "bundled": true,
           "bundled": true,
           "dev": true,
           "dev": true,
-          "optional": true,
           "requires": {
           "requires": {
             "safe-buffer": "^5.1.1",
             "safe-buffer": "^5.1.1",
             "yallist": "^3.0.0"
             "yallist": "^3.0.0"
@@ -4722,7 +4711,6 @@
           "version": "0.5.1",
           "version": "0.5.1",
           "bundled": true,
           "bundled": true,
           "dev": true,
           "dev": true,
-          "optional": true,
           "requires": {
           "requires": {
             "minimist": "0.0.8"
             "minimist": "0.0.8"
           }
           }
@@ -4803,8 +4791,7 @@
         "number-is-nan": {
         "number-is-nan": {
           "version": "1.0.1",
           "version": "1.0.1",
           "bundled": true,
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         },
         "object-assign": {
         "object-assign": {
           "version": "4.1.1",
           "version": "4.1.1",
@@ -4816,7 +4803,6 @@
           "version": "1.4.0",
           "version": "1.4.0",
           "bundled": true,
           "bundled": true,
           "dev": true,
           "dev": true,
-          "optional": true,
           "requires": {
           "requires": {
             "wrappy": "1"
             "wrappy": "1"
           }
           }
@@ -4938,7 +4924,6 @@
           "version": "1.0.2",
           "version": "1.0.2",
           "bundled": true,
           "bundled": true,
           "dev": true,
           "dev": true,
-          "optional": true,
           "requires": {
           "requires": {
             "code-point-at": "^1.0.0",
             "code-point-at": "^1.0.0",
             "is-fullwidth-code-point": "^1.0.0",
             "is-fullwidth-code-point": "^1.0.0",
@@ -6193,7 +6178,6 @@
       "version": "4.0.0",
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
       "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
       "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
       "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
-      "dev": true,
       "requires": {
       "requires": {
         "graceful-fs": "^4.1.6"
         "graceful-fs": "^4.1.6"
       }
       }
@@ -11202,8 +11186,7 @@
     "universalify": {
     "universalify": {
       "version": "0.1.2",
       "version": "0.1.2",
       "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
       "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
-      "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
-      "dev": true
+      "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
     },
     },
     "unpipe": {
     "unpipe": {
       "version": "1.0.0",
       "version": "1.0.0",

+ 4 - 2
package.json

@@ -7,11 +7,12 @@
   "scripts": {
   "scripts": {
     "dev": "nodemon --inspect server",
     "dev": "nodemon --inspect server",
     "build:client": "webpack --config build/webpack.prod.config.js",
     "build:client": "webpack --config build/webpack.prod.config.js",
-    "build:linux": "npm run build:client && webpack --config build/webpack.linux.config.js && pkg -t latest-linux-x64 -o dist/linux/liberama .",
+    "build:linux": "npm run build:client && node build/linux && pkg -t latest-linux-x64 -o dist/linux/liberama .",
     "build:win": "npm run build:client && webpack --config build/webpack.win.config.js && pkg -t latest-win-x64 -o dist/win/liberama .",
     "build:win": "npm run build:client && webpack --config build/webpack.win.config.js && pkg -t latest-win-x64 -o dist/win/liberama .",
     "lint": "eslint --ext=.js,.vue client server",
     "lint": "eslint --ext=.js,.vue client server",
     "build:client-dev": "webpack --config build/webpack.dev.config.js",
     "build:client-dev": "webpack --config build/webpack.dev.config.js",
-    "postinstall": "npm run build:client-dev && npm run build:linux"
+    "postinstall": "npm run build:client-dev && npm run build:linux",
+    "test": "node build/win"
   },
   },
   "bin": "server/index.js",
   "bin": "server/index.js",
   "pkg": {
   "pkg": {
@@ -63,6 +64,7 @@
     "download": "^7.1.0",
     "download": "^7.1.0",
     "element-ui": "^2.4.11",
     "element-ui": "^2.4.11",
     "express": "^4.16.4",
     "express": "^4.16.4",
+    "fs-extra": "^7.0.1",
     "lodash": "^4.17.11",
     "lodash": "^4.17.11",
     "sql-template-strings": "^2.2.2",
     "sql-template-strings": "^2.2.2",
     "sqlite": "^3.0.0",
     "sqlite": "^3.0.0",