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

Commit ee3e41b

Browse files
committed
feat(sourcemaps): preserve prod sourcemaps out of code dir
1 parent 8db3be5 commit ee3e41b

File tree

4 files changed

+26
-3
lines changed

4 files changed

+26
-3
lines changed

src/util/config.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,10 @@ export function generateContext(context?: BuildContext): BuildContext {
9090
setProcessEnvVar(Constants.ENV_VAR_BUILD_DIR, context.buildDir);
9191
Logger.debug(`buildDir set to ${context.buildDir}`);
9292

93+
context.sourcemapDir = resolve(context.sourcemapDir || getConfigValue(context, '--sourcemapDir', null, Constants.ENV_VAR_SOURCEMAP_DIR, Constants.ENV_VAR_SOURCEMAP_DIR.toLowerCase(), Constants.SOURCEMAP_DIR));
94+
setProcessEnvVar(Constants.ENV_VAR_SOURCEMAP_DIR, context.sourcemapDir);
95+
Logger.debug(`sourcemapDir set to ${context.sourcemapDir}`);
96+
9397
context.pagesDir = resolve(context.pagesDir || getConfigValue(context, '--pagesDir', null, Constants.ENV_VAR_PAGES_DIR, Constants.ENV_VAR_PAGES_DIR.toLowerCase(), join(context.srcDir, 'pages')));
9498
setProcessEnvVar(Constants.ENV_VAR_PAGES_DIR, context.pagesDir);
9599
Logger.debug(`pagesDir set to ${context.pagesDir}`);
@@ -164,6 +168,10 @@ export function generateContext(context?: BuildContext): BuildContext {
164168
setProcessEnvVar(Constants.ENV_VAR_SOURCE_MAP_TYPE, sourceMapTypeValue);
165169
Logger.debug(`sourceMapType set to ${sourceMapTypeValue}`);
166170

171+
const moveSourceMaps = getConfigValue(context, '--moveSourceMaps', null, Constants.ENV_VAR_MOVE_SOURCE_MAPS, Constants.ENV_VAR_MOVE_SOURCE_MAPS.toLowerCase(), 'true');
172+
setProcessEnvVar(Constants.ENV_VAR_MOVE_SOURCE_MAPS, moveSourceMaps);
173+
Logger.debug(`moveSourceMaps set to ${moveSourceMaps}`);
174+
167175
const tsConfigPathValue = resolve(getConfigValue(context, '--tsconfig', null, Constants.ENV_TS_CONFIG, Constants.ENV_TS_CONFIG.toLowerCase(), join(context.rootDir, 'tsconfig.json')));
168176
setProcessEnvVar(Constants.ENV_TS_CONFIG, tsConfigPathValue);
169177
Logger.debug(`tsconfig set to ${tsConfigPathValue}`);

src/util/constants.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export const SOURCE_MAP_TYPE_EXPENSIVE = 'source-map';
1010
export const BUILD_DIR = 'build';
1111
export const SRC_DIR = 'src';
1212
export const TMP_DIR = '.tmp';
13+
export const SOURCEMAP_DIR = '.sourcemaps';
1314
export const WWW_DIR = 'www';
1415
export const NODE_MODULES = 'node_modules';
1516
export const IONIC_ANGULAR = 'ionic-angular';
@@ -35,6 +36,7 @@ export const ENV_VAR_PIPES_DIR = 'IONIC_PIPES_DIR';
3536
export const ENV_VAR_PROVIDERS_DIR = 'IONIC_PROVIDERS_DIR';
3637
export const ENV_VAR_TMP_DIR = 'IONIC_TMP_DIR';
3738
export const ENV_VAR_WWW_DIR = 'IONIC_WWW_DIR';
39+
export const ENV_VAR_SOURCEMAP_DIR = 'IONIC_SOURCEMAP_DIR';
3840
export const ENV_VAR_HTML_TO_SERVE = 'IONIC_HTML_TO_SERVE';
3941
export const ENV_VAR_BUILD_DIR = 'IONIC_BUILD_DIR';
4042
export const ENV_VAR_NODE_MODULES_DIR = 'IONIC_NODE_MODULES_DIR';
@@ -50,6 +52,7 @@ export const ENV_VAR_IONIC_ANGULAR_ENTRY_POINT = 'IONIC_ANGULAR_ENTRY_POINT';
5052
export const ENV_VAR_APP_SCRIPTS_DIR = 'IONIC_APP_SCRIPTS_DIR';
5153
export const ENV_VAR_GENERATE_SOURCE_MAP = 'IONIC_GENERATE_SOURCE_MAP';
5254
export const ENV_VAR_SOURCE_MAP_TYPE = 'IONIC_SOURCE_MAP_TYPE';
55+
export const ENV_VAR_MOVE_SOURCE_MAPS = 'IONIC_MOVE_SOURCE_MAPS';
5356
export const ENV_TS_CONFIG = 'IONIC_TS_CONFIG';
5457
export const ENV_APP_ENTRY_POINT = 'IONIC_APP_ENTRY_POINT';
5558
export const ENV_APP_NG_MODULE_PATH = 'IONIC_APP_NG_MODULE_PATH';

src/util/interfaces.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ export interface BuildContext {
4040
inlineTemplates?: boolean;
4141
webpackWatch?: any;
4242
ionicGlobal?: any;
43+
sourcemapDir?: string;
4344

4445
sassState?: BuildState;
4546
transpileState?: BuildState;

src/util/source-maps.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
import { join } from 'path';
1+
import { join, relative, basename } from 'path';
2+
import { mkdirpSync } from 'fs-extra';
23
import * as Constants from './constants';
3-
import { getBooleanPropertyValue, readDirAsync, unlinkAsync } from './helpers';
4+
import { copyFileAsync, getBooleanPropertyValue, readDirAsync, unlinkAsync } from './helpers';
45
import { BuildContext } from './interfaces';
56

67
export function purgeSourceMapsIfNeeded(context: BuildContext): Promise<any> {
@@ -12,8 +13,18 @@ export function purgeSourceMapsIfNeeded(context: BuildContext): Promise<any> {
1213
const sourceMaps = fileNames.filter(fileName => fileName.endsWith('.map'));
1314
const fullPaths = sourceMaps.map(sourceMap => join(context.buildDir, sourceMap));
1415
const promises: Promise<void>[] = [];
16+
const copyBeforePurge = getBooleanPropertyValue(Constants.ENV_VAR_MOVE_SOURCE_MAPS);
1517
for (const fullPath of fullPaths) {
16-
promises.push(unlinkAsync(fullPath));
18+
if (copyBeforePurge) {
19+
mkdirpSync(context.sourcemapDir)
20+
const relativeTo = relative(fullPath, context.sourcemapDir)
21+
const fileName = basename(fullPath)
22+
promises.push(copyFileAsync(fullPath, join(context.sourcemapDir, fileName)).then(() => {
23+
return unlinkAsync(fullPath)
24+
}))
25+
} else {
26+
promises.push(unlinkAsync(fullPath))
27+
}
1728
}
1829
return Promise.all(promises);
1930
});

0 commit comments

Comments
 (0)