Skip to content
This repository was archived by the owner on May 1, 2020. It is now read-only.

Commit b07a505

Browse files
committed
refactor(rollup): write bundles to memory and disk
1 parent 09e1139 commit b07a505

File tree

1 file changed

+25
-6
lines changed

1 file changed

+25
-6
lines changed

src/rollup.ts

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
import { BuildContext, BuildState, ChangedFile, TaskInfo } from './util/interfaces';
2-
import { BuildError } from './util/errors';
3-
import { fillConfigDefaults, getUserConfigFile, replacePathVars } from './util/config';
4-
import { ionicRollupResolverPlugin, PLUGIN_NAME } from './rollup/ionic-rollup-resolver-plugin';
51
import { join, isAbsolute, normalize, sep } from 'path';
6-
import { Logger } from './logger/logger';
72
import * as rollupBundler from 'rollup';
83

4+
import { Logger } from './logger/logger';
5+
import { ionicRollupResolverPlugin, PLUGIN_NAME } from './rollup/ionic-rollup-resolver-plugin';
6+
import { fillConfigDefaults, getUserConfigFile, replacePathVars } from './util/config';
7+
import { BuildError } from './util/errors';
8+
import { writeFileAsync } from './util/helpers';
9+
import { BuildContext, BuildState, ChangedFile, TaskInfo } from './util/interfaces';
10+
911

1012
export function rollup(context: BuildContext, configFile: string) {
1113
configFile = getUserConfigFile(context, taskInfo, configFile);
@@ -67,6 +69,7 @@ export function rollupWorker(context: BuildContext, configFile: string): Promise
6769
rollupBundler.rollup(rollupConfig)
6870
.then((bundle: RollupBundle) => {
6971

72+
7073
Logger.debug(`bundle.modules: ${bundle.modules.length}`);
7174

7275
// set the module files used in this bundle
@@ -85,8 +88,18 @@ export function rollupWorker(context: BuildContext, configFile: string): Promise
8588
cachedBundle = bundle;
8689
}
8790

91+
const bundleOutput = bundle.generate({
92+
format: rollupConfig.format
93+
});
94+
8895
// write the bundle
89-
return bundle.write(rollupConfig);
96+
const jsFileToWrite = join(context.buildDir, rollupConfig.dest);
97+
const promises: Promise<any>[] = [];
98+
promises.push(writeFileAsync(jsFileToWrite, bundleOutput.code));
99+
if (bundleOutput.map) {
100+
promises.push(writeFileAsync(jsFileToWrite + '.map', bundleOutput.map));
101+
}
102+
return Promise.all(promises);
90103
})
91104
.then(() => {
92105
// clean up any references (overkill yes, but let's play it safe)
@@ -183,8 +196,14 @@ export interface RollupBundle {
183196
// https://github.com/rollup/rollup/wiki/JavaScript-API
184197
write?: Function;
185198
modules: RollupModule[];
199+
generate: (config: RollupConfig) => RollupBundleOutput;
186200
};
187201

202+
export interface RollupBundleOutput {
203+
code: string;
204+
map: string;
205+
}
206+
188207

189208
export interface RollupModule {
190209
id: string;

0 commit comments

Comments
 (0)