mirror of
https://github.com/LukeHagar/firecamp.git
synced 2025-12-06 12:27:44 +00:00
182 lines
4.9 KiB
JavaScript
182 lines
4.9 KiB
JavaScript
/* eslint-disable no-console */
|
|
require('dotenv').config();
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
const colors = require('colors');
|
|
const { Environment, AppFormat } = require('./environment');
|
|
const build = require('../webpack.prod');
|
|
require('shelljs/global');
|
|
|
|
module.exports = async () => {
|
|
try {
|
|
// const replaceTasks = [
|
|
// {
|
|
// from: path.join(
|
|
// __dirname,
|
|
// '../webpack/replace/JsonpMainTemplate.runtime.js'
|
|
// ),
|
|
// to: path.join(
|
|
// __dirname,
|
|
// '../node_modules/webpack/lib/JsonpMainTemplate.runtime.js'
|
|
// ),
|
|
// },
|
|
// {
|
|
// from: path.join(__dirname, '../webpack/replace/process-update.js'),
|
|
// to: path.join(
|
|
// __dirname,
|
|
// '../node_modules/webpack-hot-middleware/process-update.js'
|
|
// ),
|
|
// },
|
|
// ];
|
|
|
|
// // Replace webpack config path
|
|
// replaceTasks.forEach((task) => cp(task.from, task.to));
|
|
|
|
// Copy project assets and generate config.
|
|
const directoryPaths = [
|
|
path.join(`${__dirname}/../build`),
|
|
path.join(`${__dirname}/../build/development`),
|
|
path.join(`${__dirname}/../build/production`),
|
|
path.join(`${__dirname}/../build/development/build-scripts`),
|
|
path.join(`${__dirname}/../build/production/build-scripts`),
|
|
path.join(`${__dirname}/../build/production/services`),
|
|
path.join(`${__dirname}/../build/production/packages-executors`),
|
|
];
|
|
|
|
// Hold the build path as per the environment mode
|
|
const buildPath =
|
|
process.env.NODE_ENV === Environment.Development
|
|
? directoryPaths[1]
|
|
: directoryPaths[2];
|
|
|
|
// Remove all builds before start bundle
|
|
rm('-rf', buildPath);
|
|
|
|
// Create build directories
|
|
directoryPaths.forEach((directoryPath) => {
|
|
if (!fs.existsSync(directoryPath)) mkdir(directoryPath);
|
|
});
|
|
|
|
// Copy build-scripts to generate build
|
|
// cp(
|
|
// '-R',
|
|
// path.join(
|
|
// `${__dirname}/../packages/firecamp-desktop-app/src/build-scripts/*`
|
|
// ),
|
|
// `${buildPath}/build-scripts`
|
|
// );
|
|
|
|
// Copy react app assets
|
|
cp(
|
|
'-R',
|
|
path.join(`${__dirname}/../packages/firecamp-core/public/assets/*`),
|
|
buildPath
|
|
);
|
|
|
|
// generate package.json and manifest based on app environment
|
|
if (process.env.NODE_ENV === Environment.Development)
|
|
exec(`node ${buildPath}/build-scripts/init-package.js`);
|
|
else exec(`node ${buildPath}/build-scripts/init-package.js`);
|
|
|
|
// Generate .html
|
|
exec(
|
|
`pug -O "{ env: '${process.env.NODE_ENV}' }" -o ${buildPath} ${path.join(
|
|
__dirname,
|
|
'../packages/firecamp-core/public/views/'
|
|
)}`
|
|
);
|
|
|
|
cp(
|
|
'-R',
|
|
path.join(
|
|
`${__dirname}/../packages/firecamp-desktop-app/public/splashscreen.html`
|
|
),
|
|
`${buildPath}`
|
|
);
|
|
|
|
// Copy electron agent assets, config and services
|
|
if (
|
|
process.env.NODE_ENV === Environment.Production &&
|
|
process.env.APP_FORMAT !== AppFormat.WebApp
|
|
) {
|
|
// Copy electron agent services
|
|
cp(
|
|
'-R',
|
|
path.join(
|
|
`${__dirname}/../packages/firecamp-desktop-app/dist/services/*`
|
|
),
|
|
`${buildPath}/services`
|
|
);
|
|
|
|
// Copy http executor
|
|
cp(
|
|
'-R',
|
|
path.join(`${__dirname}/../packages-executors/*`),
|
|
`${buildPath}/packages-executors`
|
|
);
|
|
|
|
// Copy dmg app assets
|
|
if (process.env.APP_FORMAT === AppFormat.Dmg) {
|
|
mkdir(`${buildPath}/build`);
|
|
|
|
cp(
|
|
'-R',
|
|
path.join(
|
|
`${__dirname}/../packages/firecamp-desktop-app/public/assets/${process.env.NODE_ENV}/mac/*`
|
|
),
|
|
`${buildPath}/build`
|
|
);
|
|
}
|
|
|
|
// Copy common assets
|
|
cp(
|
|
'-R',
|
|
path.join(
|
|
`${__dirname}/../packages/firecamp-desktop-app/public/assets/${
|
|
[...Object.values(Environment)].includes(process.env.NODE_ENV)
|
|
? 'production'
|
|
: 'canary'
|
|
}`
|
|
),
|
|
`${buildPath}/assets`
|
|
);
|
|
}
|
|
|
|
if (process.env.NODE_ENV === 'production') {
|
|
await build();
|
|
}
|
|
|
|
return Promise.resolve();
|
|
} catch (error) {
|
|
return Promise.reject(error);
|
|
}
|
|
};
|
|
|
|
if (process.env.NODE_ENV === 'development') {
|
|
if (process.env.NODE_ENV === Environment.Production) {
|
|
console.log(
|
|
`${colors.red(
|
|
'Error:'
|
|
)} Invalid value set for env. variable (NODE_ENV: ${colors.yellow(
|
|
process.env.NODE_ENV
|
|
)})`
|
|
);
|
|
process.exit();
|
|
}
|
|
|
|
if (process.env.NODE_ENV === Environment.Development) module.exports();
|
|
}
|
|
|
|
if (process.env.NODE_ENV === 'production') {
|
|
if (process.env.NODE_ENV === Environment.Development) {
|
|
console.log(
|
|
`${colors.red(
|
|
'Error:'
|
|
)} Invalid value set for env. variable (NODE_ENV: ${colors.yellow(
|
|
process.env.NODE_ENV
|
|
)})`
|
|
);
|
|
process.exit();
|
|
}
|
|
}
|