control-freak-ide/build/electron-template/backup/build.js
plastic-hub-dev-node-saturn 538369cff7 latest
2021-05-12 18:35:18 +02:00

115 lines
3.3 KiB
JavaScript

'use strict';
var pathUtil = require('path');
var Q = require('q');
var gulp = require('gulp');
var rollup = require('rollup');
var jetpack = require('fs-jetpack');
var utils = require('./utils');
var minimist = require('minimist');
var projectDir = jetpack;
var srcDir = projectDir.cwd('./app');
var destDir = projectDir.cwd('./build');
var knownOptions = {
string: 'clean'
};
var options = minimist(process.argv.slice(2), knownOptions);
var clean = options.clean!=='false';
var paths = {
copyFromAppDir: [
'./node_modules/**',
'./vendor/**',
'./**/*.html',
'./**/*.css',
'./**/*.+(jpg|png|svg)'
]
};
console.error('-clean ' + clean + ' ' + destDir.path());
// -------------------------------------
// Tasks
// -------------------------------------
gulp.task('clean', function (callback) {
if(!clean){
var deferred = Q.defer();
deferred.resolve(true);
return deferred.promise;
}
return destDir.dirAsync('.', {
empty: clean
});
});
var copyTask = function () {
return projectDir.copyAsync('app', destDir.path(), {
overwrite: true,
matching:paths.copyFromAppDir
});
};
gulp.task('copy', ['clean'], copyTask);
var bundle = function (src, dest) {
var deferred = Q.defer();
rollup.rollup({
entry: src
}).then(function (bundle) {
var jsFile = pathUtil.basename(dest);
var result = bundle.generate({
format: 'cjs',
sourceMap: false,
sourceMapFile: jsFile
});
// Wrap code in self invoking function so the variables don't
// pollute the global namespace.
var isolatedCode = '(function () {' + result.code + '\n}());';
return Q.all([
destDir.writeAsync(dest, isolatedCode + '\n//# sourceMappingURL=' + jsFile + '.map')
]);
}).then(function () {
deferred.resolve();
}).catch(function (err) {
console.error('Build: Error during rollup', err.stack);
});
return deferred.promise;
};
var bundleApplication = function () {
return Q.all([
bundle(srcDir.path('background.js'), destDir.path('background.js'))
//bundle(srcDir.path('app.js'), destDir.path('app.js'))
]);
};
var bundleTask = function () {
return bundleApplication();
};
gulp.task('bundle', ['clean'], bundleTask);
gulp.task('finalize', ['clean'], function () {
var manifest = srcDir.read('package.json', 'json');
// Add "dev" or "test" suffix to name, so Electron will write all data
// like cookies and localStorage in separate places for each environment.
switch (utils.getEnvName()) {
case 'development':
manifest.name += '-dev';
manifest.productName += ' Dev';
break;
case 'test':
manifest.name += '-test';
manifest.productName += ' Test';
break;
}
destDir.write('package.json', manifest);
// Copy environment variables to package.json file for easy use
// in the running application. This is not official way of doing
// things, but also isn't prohibited ;)
manifest.env = projectDir.read('config/env_' + utils.getEnvName() + '.json', 'json');
destDir.write('package.json', manifest);
});
gulp.task('build', ['bundle','copy','finalize']);