mirror of https://github.com/status-im/metro.git
Remove prepack bundle functionality
Reviewed By: davidaurelio Differential Revision: D4138495 fbshipit-source-id: 52793fc1a8ef8b2fc461156607c360f34c4cb362
This commit is contained in:
parent
403d4ed721
commit
6212c223ec
|
@ -1,149 +0,0 @@
|
||||||
/**
|
|
||||||
* Copyright (c) 2015-present, Facebook, Inc.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* This source code is licensed under the BSD-style license found in the
|
|
||||||
* LICENSE file in the root directory of this source tree. An additional grant
|
|
||||||
* of patent rights can be found in the PATENTS file in the same directory.
|
|
||||||
*/
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
const fs = require('fs');
|
|
||||||
|
|
||||||
class PrepackBundle {
|
|
||||||
constructor(sourceMapUrl) {
|
|
||||||
this._finalized = false;
|
|
||||||
this._moduleIds = Object.create(null);
|
|
||||||
this._modules = Object.create(null);
|
|
||||||
this._eagerModules = [];
|
|
||||||
this._mainModule = null;
|
|
||||||
this._assets = [];
|
|
||||||
this._sourceMapUrl = sourceMapUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
addModule(id, module, deps, isPolyfill) {
|
|
||||||
this._modules[module.sourcePath] = { module, deps };
|
|
||||||
this._moduleIds[id] = module.sourcePath;
|
|
||||||
if (isPolyfill) {
|
|
||||||
this._eagerModules.push(id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
addAsset(asset) {
|
|
||||||
this._assets.push(asset);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Synchronously load a file path.
|
|
||||||
_loadFilename(path) {
|
|
||||||
const module = this._modules[path];
|
|
||||||
if (!module) {
|
|
||||||
throw new Error('Could not find file "' + path + '" in preloaded files.');
|
|
||||||
}
|
|
||||||
return module.module.code;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Synchronously resolve a relative require from a parent module.
|
|
||||||
_resolveFilename(parentPath, relativePath) {
|
|
||||||
if (!parentPath) {
|
|
||||||
const resolvedPath = this._moduleIds[relativePath];
|
|
||||||
if (!resolvedPath) {
|
|
||||||
throw new Error('Could not resolve "' + relativePath + '".');
|
|
||||||
}
|
|
||||||
return resolvedPath;
|
|
||||||
}
|
|
||||||
const deps = this._modules[parentPath].deps;
|
|
||||||
const resolvedPath = deps[relativePath];
|
|
||||||
if (!resolvedPath) {
|
|
||||||
throw new Error(
|
|
||||||
'Could not resolve "' + relativePath + '" from "' + parentPath + '".'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return resolvedPath;
|
|
||||||
}
|
|
||||||
|
|
||||||
build(options) {
|
|
||||||
var prepack = require('prepack');
|
|
||||||
|
|
||||||
var batchedBridgeConfig = (options && options.batchedBridgeConfig) || null;
|
|
||||||
if (typeof batchedBridgeConfig === 'string') {
|
|
||||||
batchedBridgeConfig = JSON.parse(
|
|
||||||
fs.readFileSync(batchedBridgeConfig, 'utf-8')
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
var options = {
|
|
||||||
batchedBridgeConfig: batchedBridgeConfig,
|
|
||||||
environment: 'react-native',
|
|
||||||
resolveFilename: this._resolveFilename.bind(this),
|
|
||||||
loadFilename: this._loadFilename.bind(this),
|
|
||||||
eagerModules: this._eagerModules
|
|
||||||
};
|
|
||||||
|
|
||||||
return prepack.compileModule(this._mainModule, options);
|
|
||||||
}
|
|
||||||
|
|
||||||
finalize(options) {
|
|
||||||
options = options || {};
|
|
||||||
if (options.runMainModule) {
|
|
||||||
options.runBeforeMainModule.forEach(this._addRequireCall, this);
|
|
||||||
this._mainModule = options.mainModuleId;
|
|
||||||
}
|
|
||||||
|
|
||||||
Object.freeze(this._moduleIds);
|
|
||||||
Object.freeze(this._modules);
|
|
||||||
Object.freeze(this._assets);
|
|
||||||
Object.freeze(this._eagerModules);
|
|
||||||
this._finalized = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
_addRequireCall(moduleId) {
|
|
||||||
this._eagerModules.push(moduleId);
|
|
||||||
}
|
|
||||||
|
|
||||||
_assertFinalized() {
|
|
||||||
if (!this._finalized) {
|
|
||||||
throw new Error('Bundle needs to be finalized before getting any source');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
getAssets() {
|
|
||||||
return this._assets;
|
|
||||||
}
|
|
||||||
|
|
||||||
toJSON() {
|
|
||||||
if (!this._finalized) {
|
|
||||||
throw new Error('Cannot serialize bundle unless finalized');
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
modules: this._modules,
|
|
||||||
moduleIds: this._moduleIds,
|
|
||||||
assets: this._assets,
|
|
||||||
sourceMapUrl: this._sourceMapUrl,
|
|
||||||
mainModule: this._mainModule,
|
|
||||||
eagerModules: this._eagerModules,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
static fromJSON(json) {
|
|
||||||
const bundle = new PrepackBundle(json.sourceMapUrl);
|
|
||||||
bundle._assets = json.assets;
|
|
||||||
bundle._moduleIds = json.moduleIds;
|
|
||||||
bundle._modules = json.modules;
|
|
||||||
bundle._sourceMapUrl = json.sourceMapUrl;
|
|
||||||
|
|
||||||
bundle._eagerModules = json.eagerModules;
|
|
||||||
bundle._mainModule = json.mainModule;
|
|
||||||
|
|
||||||
Object.freeze(bundle._moduleIds);
|
|
||||||
Object.freeze(bundle._modules);
|
|
||||||
Object.freeze(bundle._assets);
|
|
||||||
Object.freeze(bundle._eagerModules);
|
|
||||||
|
|
||||||
bundle._finalized = true;
|
|
||||||
|
|
||||||
return bundle;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = PrepackBundle;
|
|
|
@ -22,7 +22,6 @@ jest
|
||||||
.mock('../../lib/declareOpts')
|
.mock('../../lib/declareOpts')
|
||||||
.mock('../../Resolver')
|
.mock('../../Resolver')
|
||||||
.mock('../Bundle')
|
.mock('../Bundle')
|
||||||
.mock('../PrepackBundle')
|
|
||||||
.mock('../HMRBundle')
|
.mock('../HMRBundle')
|
||||||
.mock('../../Logger')
|
.mock('../../Logger')
|
||||||
.mock('../../lib/declareOpts');
|
.mock('../../lib/declareOpts');
|
||||||
|
|
|
@ -18,7 +18,6 @@ const Transformer = require('../JSTransformer');
|
||||||
const Resolver = require('../Resolver');
|
const Resolver = require('../Resolver');
|
||||||
const Bundle = require('./Bundle');
|
const Bundle = require('./Bundle');
|
||||||
const HMRBundle = require('./HMRBundle');
|
const HMRBundle = require('./HMRBundle');
|
||||||
const PrepackBundle = require('./PrepackBundle');
|
|
||||||
const ModuleTransport = require('../lib/ModuleTransport');
|
const ModuleTransport = require('../lib/ModuleTransport');
|
||||||
const declareOpts = require('../lib/declareOpts');
|
const declareOpts = require('../lib/declareOpts');
|
||||||
const imageSize = require('image-size');
|
const imageSize = require('image-size');
|
||||||
|
@ -313,46 +312,6 @@ class Bundler {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
prepackBundle({
|
|
||||||
entryFile,
|
|
||||||
runModule: runMainModule,
|
|
||||||
runBeforeMainModule,
|
|
||||||
sourceMapUrl,
|
|
||||||
dev,
|
|
||||||
platform,
|
|
||||||
assetPlugins,
|
|
||||||
}) {
|
|
||||||
const onModuleTransformed = ({module, transformed, response, bundle}) => {
|
|
||||||
const deps = Object.create(null);
|
|
||||||
const pairs = response.getResolvedDependencyPairs(module);
|
|
||||||
if (pairs) {
|
|
||||||
pairs.forEach(pair => {
|
|
||||||
deps[pair[0]] = pair[1].path;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return module.getName().then(name => {
|
|
||||||
bundle.addModule(name, transformed, deps, module.isPolyfill());
|
|
||||||
});
|
|
||||||
};
|
|
||||||
const finalizeBundle = ({bundle, response}) => {
|
|
||||||
const {mainModuleId} = response;
|
|
||||||
bundle.finalize({runBeforeMainModule, runMainModule, mainModuleId});
|
|
||||||
return bundle;
|
|
||||||
};
|
|
||||||
|
|
||||||
return this._buildBundle({
|
|
||||||
entryFile,
|
|
||||||
dev,
|
|
||||||
platform,
|
|
||||||
onModuleTransformed,
|
|
||||||
finalizeBundle,
|
|
||||||
minify: false,
|
|
||||||
bundle: new PrepackBundle(sourceMapUrl),
|
|
||||||
assetPlugins,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
_buildBundle({
|
_buildBundle({
|
||||||
entryFile,
|
entryFile,
|
||||||
dev,
|
dev,
|
||||||
|
|
|
@ -329,17 +329,6 @@ class Server {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
buildPrepackBundle(options) {
|
|
||||||
return Promise.resolve().then(() => {
|
|
||||||
if (!options.platform) {
|
|
||||||
options.platform = getPlatformExtension(options.entryFile);
|
|
||||||
}
|
|
||||||
|
|
||||||
const opts = bundleOpts(options);
|
|
||||||
return this._bundler.prepackBundle(opts);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
buildBundleFromUrl(reqUrl) {
|
buildBundleFromUrl(reqUrl) {
|
||||||
const options = this._getOptionsFromUrl(reqUrl);
|
const options = this._getOptionsFromUrl(reqUrl);
|
||||||
return this.buildBundle(options);
|
return this.buildBundle(options);
|
||||||
|
|
Loading…
Reference in New Issue