mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-14 18:12:09 +08:00
feat: support webpack profiling (#9804)
Co-authored-by: Martin Guillon <martin.guillon@akylas.fr>
This commit is contained in:
@ -109,4 +109,14 @@ describe('base configuration', () => {
|
||||
force: true,
|
||||
});
|
||||
});
|
||||
|
||||
it('supports --env.profile', () => {
|
||||
init({
|
||||
platform: 'ios',
|
||||
profile: true,
|
||||
});
|
||||
const config = base(new Config());
|
||||
|
||||
expect(config.get('profile')).toBe(true);
|
||||
});
|
||||
});
|
||||
|
@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
import { redBright, green, greenBright } from 'chalk';
|
||||
import { redBright, green, greenBright, yellow } from 'chalk';
|
||||
import { program } from 'commander';
|
||||
import dedent from 'ts-dedent';
|
||||
import webpack from 'webpack';
|
||||
@ -115,6 +115,28 @@ program
|
||||
errorDetails: env.verbose,
|
||||
})
|
||||
);
|
||||
|
||||
// if webpack profile is enabled we write the stats to a JSON file
|
||||
if (configuration.profile || env.profile) {
|
||||
console.log(
|
||||
[
|
||||
'',
|
||||
'|',
|
||||
`| The build profile has been written to ${yellow(
|
||||
'webpack.stats.json'
|
||||
)}`,
|
||||
`| You can analyse the stats at ${green(
|
||||
'https://webpack.github.io/analyse/'
|
||||
)}`,
|
||||
'|',
|
||||
'',
|
||||
].join('\n')
|
||||
);
|
||||
fs.writeFileSync(
|
||||
path.join(process.cwd(), 'webpack.stats.json'),
|
||||
JSON.stringify(stats.toJson())
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -222,6 +222,11 @@ export default function (config: Config, env: IWebpackEnv = _env): Config {
|
||||
});
|
||||
});
|
||||
|
||||
// enable profiling with --env.profile
|
||||
config.when(env.profile, (config) => {
|
||||
config.profile(true);
|
||||
});
|
||||
|
||||
// worker-loader should be declared before ts-loader
|
||||
config.module
|
||||
.rule('workers')
|
||||
|
@ -43,6 +43,9 @@ export interface IWebpackEnv {
|
||||
// enable verbose output
|
||||
verbose?: boolean;
|
||||
|
||||
// enable webpack profiling
|
||||
profile?: boolean;
|
||||
|
||||
// misc
|
||||
replace?: string[] | string;
|
||||
watchNodeModules?: boolean;
|
||||
|
Reference in New Issue
Block a user