Рефакторинг

This commit is contained in:
Book Pauk
2019-01-06 13:13:10 +07:00
parent 20e2190974
commit 0ea28c27ad
6 changed files with 114 additions and 187 deletions

44
build/linux.js Normal file
View File

@@ -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();

View File

@@ -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'));
});
});
}
})
]
};

View File

@@ -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
build/win.js Normal file
View File

@@ -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();