Mailspring/scripts/build-n1-cloud.js

52 lines
2.3 KiB
JavaScript
Raw Normal View History

const fs = require('fs-extra');
const glob = require('glob');
const path = require('path');
const babel = require('babel-core');
fs.removeSync("n1_cloud_dist")
fs.copySync("packages/cloud-api", "n1_cloud_dist/cloud-api")
fs.copySync("packages/cloud-workers", "n1_cloud_dist/cloud-workers")
fs.copySync("packages/cloud-core", "n1_cloud_dist/cloud-core")
fs.copySync("packages/isomorphic-core", "n1_cloud_dist/isomorphic-core")
glob.sync("n1_cloud_dist/**/*.es6", {absolute: true}).forEach((es6Path) => {
if (/(node_modules|\.js$)/.test(es6Path)) return
const outPath = es6Path.replace(path.extname(es6Path), '.js');
console.log(`---> Compiling ${es6Path.slice(es6Path.indexOf("/n1_cloud_dist") + 15)}`)
const res = babel.transformFileSync(es6Path, {
presets: ["electron"],
sourceMaps: true,
sourceRoot: '/',
sourceMapTarget: path.relative("n1_cloud_dist/", outPath),
sourceFileName: path.relative("n1_cloud_dist/", es6Path),
});
fs.writeFileSync(outPath, `${res.code}\n//# sourceMappingURL=${path.basename(outPath)}.map\n`);
fs.writeFileSync(`${outPath}.map`, JSON.stringify(res.map));
fs.unlinkSync(es6Path);
});
// Lerna bootstrap creates symlinks. Unfortunately it creates absolute
// path symlinks that reference the pre-copied, uncompiled files. This
// does a direct copy for each of the leran bootstrap links to ensure we
// don't encounter symlink path problems on prod
//
// Fix cloud-core symlinks
fs.removeSync("n1_cloud_dist/cloud-core/node_modules/isomorphic-core")
fs.copySync("n1_cloud_dist/isomorphic-core", "n1_cloud_dist/cloud-core/node_modules/isomorphic-core")
// Fix cloud-api symlinks
fs.removeSync("n1_cloud_dist/cloud-api/node_modules/isomorphic-core")
fs.removeSync("n1_cloud_dist/cloud-api/node_modules/cloud-core")
fs.copySync("n1_cloud_dist/isomorphic-core", "n1_cloud_dist/cloud-api/node_modules/isomorphic-core")
fs.copySync("n1_cloud_dist/cloud-core", "n1_cloud_dist/cloud-api/node_modules/cloud-core")
// Fix cloud-workers symlinks
fs.removeSync("n1_cloud_dist/cloud-workers/node_modules/isomorphic-core")
fs.removeSync("n1_cloud_dist/cloud-workers/node_modules/cloud-core")
fs.copySync("n1_cloud_dist/isomorphic-core", "n1_cloud_dist/cloud-workers/node_modules/isomorphic-core")
fs.copySync("n1_cloud_dist/cloud-core", "n1_cloud_dist/cloud-workers/node_modules/cloud-core")