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

This commit is contained in:
Book Pauk
2019-01-05 20:04:18 +07:00
parent 32b6038deb
commit 29b9fa5ed2
4 changed files with 722 additions and 25 deletions

View File

@@ -9,7 +9,7 @@ const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const CleanWebpackPlugin = require('clean-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');
module.exports = merge(baseWpConfig, {

View File

@@ -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 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 sqliteFilename = `${sqliteFile}.tar.gz`;
const tempDir = `${distDir}/tmp/sqlite`;
const sqliteDecompressedFilename = `${tempDir}/${sqliteFile}/node_sqlite3.node`;
const sqliteDistFilename = `${outDir}/node_sqlite3.node`;
module.exports = {
mode: 'production',
entry: `${distDir}/public/index.html`,
entry: `${publicDir}/index.html`,
output: {
path: outDir
},
@@ -23,11 +38,35 @@ module.exports = {
]
},
plugins: [
new CleanWebpackPlugin([outDir], {root: distDir}),
new CleanWebpackPlugin([outDir, tempDir], {root: distDir}),
new DisableOutputWebpackPlugin(),
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}`);
});
});
}
})
]
};