mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-02 09:21:44 +08:00
Summary: The `--reset-cache` argument was not working correctly with the `bundle` command. This ensures the `--reset-cache` arg is passed to metro. Fixes #20703 Thank you for sending the PR! We appreciate you spending the time to work on these changes. Help us understand your motivation by explaining why you decided to make this change. If this PR fixes an issue, type "Fixes #issueNumber" to automatically close the issue when the PR is merged. Pull Request resolved: https://github.com/facebook/react-native/pull/20706 Differential Revision: D9400548 Pulled By: hramos fbshipit-source-id: 2c7ed0226cfcdffa8cc77506500c314552baef3f
81 lines
2.2 KiB
JavaScript
81 lines
2.2 KiB
JavaScript
/**
|
|
* Copyright (c) 2015-present, Facebook, Inc.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
* @format
|
|
* @flow
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
const log = require('../util/log').out('bundle');
|
|
/* $FlowFixMe(site=react_native_oss) */
|
|
const Server = require('metro/src/Server');
|
|
|
|
/* $FlowFixMe(site=react_native_oss) */
|
|
const outputBundle = require('metro/src/shared/output/bundle');
|
|
const path = require('path');
|
|
const saveAssets = require('./saveAssets');
|
|
|
|
import type {RequestOptions, OutputOptions} from './types.flow';
|
|
import type {ConfigT} from 'metro-config/src/configTypes.flow';
|
|
|
|
async function buildBundle(
|
|
args: OutputOptions & {
|
|
assetsDest: mixed,
|
|
entryFile: string,
|
|
maxWorkers: number,
|
|
resetCache: boolean,
|
|
transformer: string,
|
|
minify: boolean,
|
|
},
|
|
configPromise: Promise<ConfigT>,
|
|
output = outputBundle,
|
|
) {
|
|
// This is used by a bazillion of npm modules we don't control so we don't
|
|
// have other choice than defining it as an env variable here.
|
|
process.env.NODE_ENV = args.dev ? 'development' : 'production';
|
|
const config = await configPromise;
|
|
|
|
let sourceMapUrl = args.sourcemapOutput;
|
|
if (sourceMapUrl && !args.sourcemapUseAbsolutePath) {
|
|
sourceMapUrl = path.basename(sourceMapUrl);
|
|
}
|
|
|
|
config.transformModulePath = args.transformer
|
|
? path.resolve(args.transformer)
|
|
: config.transformModulePath;
|
|
|
|
const requestOpts: RequestOptions = {
|
|
entryFile: args.entryFile,
|
|
sourceMapUrl,
|
|
dev: args.dev,
|
|
minify: args.minify !== undefined ? args.minify : !args.dev,
|
|
platform: args.platform,
|
|
};
|
|
|
|
const server = new Server({...config, resetCache: args.resetCache});
|
|
|
|
try {
|
|
const bundle = await output.build(server, requestOpts);
|
|
|
|
await output.save(bundle, args, log);
|
|
|
|
// Save the assets of the bundle
|
|
const outputAssets = await server.getAssets({
|
|
...Server.DEFAULT_BUNDLE_OPTIONS,
|
|
...requestOpts,
|
|
bundleType: 'todo',
|
|
});
|
|
|
|
// When we're done saving bundle output and the assets, we're done.
|
|
return await saveAssets(outputAssets, args.platform, args.assetsDest);
|
|
} finally {
|
|
server.end();
|
|
}
|
|
}
|
|
|
|
module.exports = buildBundle;
|