Forráskód Böngészése

Добавил скачивание и распаковку node_sqlite3.node для дистрибутива win

Book Pauk 6 éve
szülő
commit
29b9fa5ed2
4 módosított fájl, 665 hozzáadás és 23 törlés
  1. 1 1
      build/webpack.prod.config.js
  2. 42 3
      build/webpack.win.config.js
  3. 618 19
      package-lock.json
  4. 4 0
      package.json

+ 1 - 1
build/webpack.prod.config.js

@@ -9,7 +9,7 @@ const MiniCssExtractPlugin = require("mini-css-extract-plugin");
 const CleanWebpackPlugin = require('clean-webpack-plugin');
 const CleanWebpackPlugin = require('clean-webpack-plugin');
 const HtmlWebpackPlugin = require('html-webpack-plugin');
 const HtmlWebpackPlugin = require('html-webpack-plugin');
 
 
-const publicDir = path.resolve(__dirname, '../dist/public');
+const publicDir = path.resolve(__dirname, '../dist/tmp/public');
 const clientDir = path.resolve(__dirname, '../client');
 const clientDir = path.resolve(__dirname, '../client');
 
 
 module.exports = merge(baseWpConfig, {
 module.exports = merge(baseWpConfig, {

+ 42 - 3
build/webpack.win.config.js

@@ -1,16 +1,31 @@
+const sqliteRemoteUrl = 'https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v4.0.4';
+const sqliteFile = 'node-v64-win32-x64';
+
 const path = require("path");
 const path = require("path");
 const webpack = require("webpack");
 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 CleanWebpackPlugin = require('clean-webpack-plugin');
 const DisableOutputWebpackPlugin = require('disable-output-webpack-plugin');
 const DisableOutputWebpackPlugin = require('disable-output-webpack-plugin');
 const CopyWebpackPlugin = require('copy-webpack-plugin');
 const CopyWebpackPlugin = require('copy-webpack-plugin');
+const EventHooksPlugin = require('event-hooks-webpack-plugin');
 
 
 const distDir = path.resolve(__dirname, '../dist');
 const distDir = path.resolve(__dirname, '../dist');
+const publicDir = `${distDir}/tmp/public`;
 const outDir = `${distDir}/win`;
 const outDir = `${distDir}/win`;
 
 
+const sqliteFilename = `${sqliteFile}.tar.gz`;
+const tempDir = `${distDir}/tmp/sqlite`;
+const sqliteDecompressedFilename = `${tempDir}/${sqliteFile}/node_sqlite3.node`;
+const sqliteDistFilename = `${outDir}/node_sqlite3.node`;
+
 module.exports = {
 module.exports = {
     mode: 'production',
     mode: 'production',
-    entry: `${distDir}/public/index.html`,
+    entry: `${publicDir}/index.html`,
     output: {
     output: {
         path: outDir
         path: outDir
     },
     },
@@ -23,11 +38,35 @@ module.exports = {
         ]
         ]
     },
     },
     plugins: [
     plugins: [
-        new CleanWebpackPlugin([outDir], {root: distDir}),
+        new CleanWebpackPlugin([outDir, tempDir], {root: distDir}),
         new DisableOutputWebpackPlugin(),
         new DisableOutputWebpackPlugin(),
         new CopyWebpackPlugin([
         new CopyWebpackPlugin([
-                { from: `${distDir}/public`, to: `${outDir}/public` }
+                { from: publicDir, to: `${outDir}/public` }
             ]
             ]
         ),
         ),
+        new EventHooksPlugin({
+            done: () => {
+                // Скачиваем node_sqlite3.node для винды, т.к. pkg не включает его в сборку
+                const url = `${sqliteRemoteUrl}/${sqliteFilename}`;
+                fs.mkdirSync(tempDir);
+                const d = download(url);
+                d.pipe(fs.createWriteStream(`${tempDir}/${sqliteFilename}`));
+                d.on('end', () => {
+                    console.log(`downloading ${url} done`);
+
+                    //распаковываем
+                    decompress(`${tempDir}/${sqliteFilename}`, `${tempDir}`, {
+                        plugins: [
+                            decompressTargz()
+                        ]
+                    }).then(() => {
+                        console.log('files decompressed');
+                        // копируем в дистрибутив
+                        fs.copyFileSync(sqliteDecompressedFilename, sqliteDistFilename);
+                        console.log(`copied ${sqliteDecompressedFilename} to ${sqliteDistFilename}`);
+                    });
+                });
+            }
+        })
     ]
     ]
 };
 };

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 618 - 19
package-lock.json


+ 4 - 0
package.json

@@ -29,12 +29,14 @@
     "clean-webpack-plugin": "^1.0.0",
     "clean-webpack-plugin": "^1.0.0",
     "copy-webpack-plugin": "^4.6.0",
     "copy-webpack-plugin": "^4.6.0",
     "css-loader": "^1.0.0",
     "css-loader": "^1.0.0",
+    "decompress-targz": "^4.1.1",
     "disable-output-webpack-plugin": "^1.0.1",
     "disable-output-webpack-plugin": "^1.0.1",
     "element-theme-chalk": "^2.4.11",
     "element-theme-chalk": "^2.4.11",
     "eslint": "^5.11.1",
     "eslint": "^5.11.1",
     "eslint-plugin-html": "^5.0.0",
     "eslint-plugin-html": "^5.0.0",
     "eslint-plugin-node": "^8.0.0",
     "eslint-plugin-node": "^8.0.0",
     "eslint-plugin-vue": "^5.0.0",
     "eslint-plugin-vue": "^5.0.0",
+    "event-hooks-webpack-plugin": "^2.1.1",
     "file-loader": "^3.0.1",
     "file-loader": "^3.0.1",
     "html-webpack-plugin": "^3.2.0",
     "html-webpack-plugin": "^3.2.0",
     "mini-css-extract-plugin": "^0.5.0",
     "mini-css-extract-plugin": "^0.5.0",
@@ -57,6 +59,8 @@
     "axios": "^0.18.0",
     "axios": "^0.18.0",
     "bluebird": "^3.5.3",
     "bluebird": "^3.5.3",
     "compression": "^1.7.3",
     "compression": "^1.7.3",
+    "decompress": "^4.2.0",
+    "download": "^7.1.0",
     "element-ui": "^2.4.11",
     "element-ui": "^2.4.11",
     "express": "^4.16.4",
     "express": "^4.16.4",
     "lodash": "^4.17.11",
     "lodash": "^4.17.11",

Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott