From 7621f7ebfcfd1cc2c5b9016e45f310cb811397fa Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Sat, 5 Jan 2019 20:44:27 +0700 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D1=81=D0=BA=D0=B0=D1=87=D0=B8=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?ipfs=20=D0=B4=D0=BB=D1=8F=20=D0=B4=D0=B8=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=B8=D0=B1=D1=83=D1=82=D0=B8=D0=B2=D0=B0=20linux?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + build/webpack.linux.config.js | 42 ++++++++++++++++++++++++++++++++--- package.json | 2 +- 3 files changed, 41 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 203ed917..11254ed0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ /node_modules /server/data /server/public +/server/ipfs /dist diff --git a/build/webpack.linux.config.js b/build/webpack.linux.config.js index 0dd513bf..a0a5bc4f 100644 --- a/build/webpack.linux.config.js +++ b/build/webpack.linux.config.js @@ -1,16 +1,25 @@ 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: `${distDir}/public/index.html`, + entry: `${publicDir}/index.html`, output: { path: outDir }, @@ -23,11 +32,38 @@ module.exports = { ] }, plugins: [ - new CleanWebpackPlugin([outDir], {root: distDir}), + new CleanWebpackPlugin([outDir, tempDownloadDir], {root: distDir}), new DisableOutputWebpackPlugin(), new CopyWebpackPlugin([ - { from: `${distDir}/public`, to: `${outDir}/public` } + { 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')); + }); + }); + } + }) ] }; diff --git a/package.json b/package.json index 887d3148..7473e8b7 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "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", "build:client-dev": "webpack --config build/webpack.dev.config.js", - "postinstall": "npm run build:client-dev" + "postinstall": "npm run build:client-dev && build:linux" }, "bin": "server/index.js", "pkg": {