Skip to content

Commit 0d27787

Browse files
committed
fix(modules): core module build
1 parent 54054aa commit 0d27787

File tree

4 files changed

+53
-33
lines changed

4 files changed

+53
-33
lines changed

src/core/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
"name": "angularfire2",
33
"version": "4.0.0-rc.1",
44
"description": "The core module",
5-
"main": "../../bundles/core.umd.js",
6-
"module": "index.es5.js",
7-
"es2015": "index.js",
5+
"main": "./bundles/core.umd.js",
6+
"module": "index.js",
7+
"es2015": "es2015/index.js",
88
"keywords": [
99
"angular",
1010
"firebase",

src/core/tsconfig-build.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
"module": "es2015",
66
"target": "es2015",
77
"noImplicitAny": false,
8-
"outDir": "../../dist/packages/core",
8+
"outDir": "../../dist/packages-dist/es2015",
99
"rootDir": ".",
1010
"sourceMap": true,
1111
"inlineSources": true,
12-
"declaration": true,
12+
"declaration": false,
1313
"removeComments": true,
1414
"strictNullChecks": true,
1515
"lib": [

src/core/tsconfig-esm.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
{
2-
"extends": "tsconfig-build.json",
2+
"extends": "./tsconfig-build.json",
33
"compilerOptions": {
44
"target": "es5",
5-
"outDir": "../../dist/packages-dist/core"
5+
"outDir": "../../dist/packages-dist",
6+
"declaration": true
67
}
78
}

tools/build.js

Lines changed: 45 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,76 @@
1-
// TS -> ES2015 -> ES5 -> UMD
2-
3-
// tsc -> tsc -p -> rollup
4-
51
const { rollup } = require('rollup');
62
const { spawn } = require('child_process');
73
const { Observable } = require('rxjs');
8-
const { copy } = require('fs-extra');
4+
const { copy, rename, readdirSync } = require('fs-extra');
95

106
function spawnObservable(command, args) {
117
return Observable.create(observer => {
128
const cmd = spawn(command, args);
13-
observer.next('');
9+
observer.next(''); // hack to kick things off, not every command will have a stdout
1410
cmd.stdout.on('data', (data) => { observer.next(data.toString('utf8')); });
1511
cmd.stderr.on('data', (data) => { observer.error(data.toString('utf8')); });
1612
cmd.on('close', (data) => { observer.complete(); });
1713
});
1814
}
1915

20-
function createUmd(module) {
21-
return rollup({
22-
entry: `${process.cwd()}/dist/packages/${module}/index.js`
23-
})
16+
function createUmd(name) {
17+
// core module is angularfire2 the rest are angularfire2.feature
18+
const moduleName = name === 'core' ? 'angularfire2' : `angularfire2.${name}`;
19+
// core is at the root and the rest are in their own folders
20+
const entry = name === 'core' ? `${process.cwd()}/dist/packages-dist/index.js` :
21+
`${process.cwd()}/dist/packages-dist/${name}/index.js`;
22+
return rollup({ entry })
2423
.then(bundle => {
2524
const result = bundle.generate({
2625
format: 'umd',
27-
moduleName: 'angularfire2'
26+
moduleName
2827
});
2928
return bundle.write({
3029
format: 'umd',
31-
dest: `${process.cwd()}/dist/bundles/${module}.umd.js`,
32-
moduleName: 'angularfire2'
30+
dest: `${process.cwd()}/dist/bundles/${name}.umd.js`,
31+
moduleName
3332
});
3433
});
3534
}
3635

37-
function getSrcPackageFile(module) {
38-
return `${process.cwd()}/src/${module}/package.json`;
36+
function getSrcPackageFile(moduleName) {
37+
const PATHS = {
38+
core: `${process.cwd()}/src/core/package.json`,
39+
auth: `${process.cwd()}/src/auth/package.json`,
40+
database: `${process.cwd()}/src/database/package.json`
41+
};
42+
return PATHS[moduleName];
43+
}
44+
45+
function getDestPackageFile(moduleName) {
46+
const PATHS = {
47+
core: `${process.cwd()}/dist/packages-dist/package.json`,
48+
auth: `${process.cwd()}/dist/packages-dist/auth/package.json`,
49+
database: `${process.cwd()}/dist/packages-dist/database/package.json`
50+
};
51+
return PATHS[moduleName];
3952
}
4053

41-
function getDestPackageFile(module) {
42-
return `${process.cwd()}/dist/packages/${module}/package.json`;
54+
function copyPackage(moduleName) {
55+
return copy(getSrcPackageFile(moduleName), getDestPackageFile(moduleName));
4356
}
4457

58+
// constants for running typescript commands
59+
const TSC = 'node_modules/.bin/tsc';
60+
const NGC = 'node_modules/.bin/ngc';
61+
const TSC_ARGS = (name, config = 'build') => [`-p`, `${process.cwd()}/src/${name}/tsconfig-${config}.json`];
62+
4563
function buildModule(name) {
46-
const module$ = spawnObservable('node_modules/.bin/tsc', [`-p`, `${process.cwd()}/src/${name}/tsconfig-build.json`]);
47-
// Run tsc -> copy files -> run rollup
48-
return module$
49-
.mergeMap(() => {
50-
return Observable.from(copy(getSrcPackageFile(name), getDestPackageFile(name)))
51-
})
52-
.mergeMap(() => {
53-
return Observable.from(createUmd(name))
54-
});
64+
// Run tsc on module (TS -> ES2015)
65+
return spawnObservable(TSC, TSC_ARGS(name))
66+
// Copy package.json to dist/pacakges/modulename/package.json
67+
// Run tsc but for ES5 target and ES2015 imports, exports to dist/packages-dist
68+
// (this is for rollup)
69+
.concatMap(() => spawnObservable(TSC, TSC_ARGS(name, 'esm')))
70+
.concatMap(() => Observable.from(copyPackage(name)))
71+
.debounceTime(2000)
72+
// Use rollup to build UMD bundle to dist/bundles`
73+
.concatMap(() => Observable.from(createUmd(name)));
5574
}
5675

5776
buildModule('core').subscribe(

0 commit comments

Comments
 (0)