mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-12-26 10:00:50 +08:00
[*] Add basic babel toolchain
Summary: Adds babel to K2 Creates a simple build script so it'll run on prod. Test Plan: manual Reviewers: jackie, halla, juan Reviewed By: juan Differential Revision: https://phab.nylas.com/D3527
This commit is contained in:
parent
b17be6b873
commit
1d254a7aaa
9 changed files with 72 additions and 2 deletions
6
.babelrc
Normal file
6
.babelrc
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"presets": [
|
||||||
|
"electron"
|
||||||
|
],
|
||||||
|
"sourceMaps": "inline"
|
||||||
|
}
|
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,3 +1,5 @@
|
||||||
|
n1_cloud_dist
|
||||||
|
|
||||||
*.swp
|
*.swp
|
||||||
*~
|
*~
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|
|
@ -17,6 +17,9 @@ RUN npm install --production
|
||||||
# to run this separately from npm postinstall due to permission issues.
|
# to run this separately from npm postinstall due to permission issues.
|
||||||
RUN node_modules/.bin/lerna bootstrap
|
RUN node_modules/.bin/lerna bootstrap
|
||||||
|
|
||||||
|
# This uses babel to compile any es6 to stock js for plain node
|
||||||
|
RUN npm run build-n1-cloud
|
||||||
|
|
||||||
# External services run on port 80. Expose it.
|
# External services run on port 80. Expose it.
|
||||||
EXPOSE 5100
|
EXPOSE 5100
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,11 @@
|
||||||
"description": "The local sync engine for Nylas N1",
|
"description": "The local sync engine for Nylas N1",
|
||||||
"main": "",
|
"main": "",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"babel-cli": "6.18.0",
|
||||||
|
"babel-core": "6.20.0",
|
||||||
|
"babel-preset-electron": "^0.37.8",
|
||||||
|
"fs-extra": "1.0.0",
|
||||||
|
"glob": "7.1.1",
|
||||||
"lerna": "2.0.0-beta.30",
|
"lerna": "2.0.0-beta.30",
|
||||||
"pm2": "^1.1.3"
|
"pm2": "^1.1.3"
|
||||||
},
|
},
|
||||||
|
@ -19,6 +24,7 @@
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "pm2 stop all; pm2 delete all; pm2 start ./pm2-dev.yml --no-daemon",
|
"start": "pm2 stop all; pm2 delete all; pm2 start ./pm2-dev.yml --no-daemon",
|
||||||
"stop": "pm2 stop all; pm2 delete all",
|
"stop": "pm2 stop all; pm2 delete all",
|
||||||
|
"build-n1-cloud": "node scripts/build-n1-cloud.js",
|
||||||
"restart": "pm2 restart all",
|
"restart": "pm2 restart all",
|
||||||
"postinstall": "lerna bootstrap"
|
"postinstall": "lerna bootstrap"
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
apps:
|
apps:
|
||||||
- script : packages/cloud-api/app.js
|
- script : packages/cloud-api/app.js
|
||||||
|
interpreter : node_modules/.bin/babel-node
|
||||||
watch : ["packages"]
|
watch : ["packages"]
|
||||||
name : api
|
name : api
|
||||||
env :
|
env :
|
||||||
|
@ -13,6 +14,7 @@ apps:
|
||||||
HONEY_DATASET: 'n1-cloud-staging'
|
HONEY_DATASET: 'n1-cloud-staging'
|
||||||
HONEY_WRITE_KEY: 'XXXXXXXXXXXXX'
|
HONEY_WRITE_KEY: 'XXXXXXXXXXXXX'
|
||||||
- script : packages/cloud-workers/app.js
|
- script : packages/cloud-workers/app.js
|
||||||
|
interpreter : node_modules/.bin/babel-node
|
||||||
watch : ["packages"]
|
watch : ["packages"]
|
||||||
name : workers
|
name : workers
|
||||||
env :
|
env :
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
apps:
|
apps:
|
||||||
- script : packages/cloud-api/app.js
|
- script : n1_cloud_dist/cloud-api/app.js
|
||||||
name : api
|
name : api
|
||||||
instances: 0
|
instances: 0
|
||||||
exec_mode: cluster
|
exec_mode: cluster
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
apps:
|
apps:
|
||||||
- script : packages/cloud-workers/app.js
|
- script : n1_cloud_dist/cloud-workers/app.js
|
||||||
name : workers
|
name : workers
|
||||||
instances: 0
|
instances: 0
|
||||||
exec_mode: fork
|
exec_mode: fork
|
||||||
|
|
51
scripts/build-n1-cloud.js
Normal file
51
scripts/build-n1-cloud.js
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
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")
|
||||||
|
|
Loading…
Reference in a new issue