mirror of https://github.com/status-im/metro.git
Allow custom platforms for the RN Packager on a per-project basis
Reviewed By: cpojer Differential Revision: D4255979 fbshipit-source-id: bf900b67ee30e2f994e96c9a6103ed2e53a87f88
This commit is contained in:
parent
7014885067
commit
f4b738ff8e
|
@ -267,6 +267,16 @@ describe('Bundler', function() {
|
|||
);
|
||||
});
|
||||
|
||||
it('allows overriding the platforms array', () => {
|
||||
expect(bundler._opts.platforms).toEqual(['ios', 'android', 'windows', 'web']);
|
||||
const b = new Bundler({
|
||||
projectRoots,
|
||||
assetServer: assetServer,
|
||||
platforms: ['android', 'vr'],
|
||||
});
|
||||
expect(b._opts.platforms).toEqual(['android', 'vr']);
|
||||
});
|
||||
|
||||
describe('getOrderedDependencyPaths', () => {
|
||||
beforeEach(() => {
|
||||
assetServer.getAssetData.mockImpl(function(relPath) {
|
||||
|
|
|
@ -25,6 +25,7 @@ const imageSize = require('image-size');
|
|||
const path = require('path');
|
||||
const version = require('../../../../package.json').version;
|
||||
const denodeify = require('denodeify');
|
||||
const defaults = require('../../../defaults');
|
||||
|
||||
const {
|
||||
sep: pathSeparator,
|
||||
|
@ -91,6 +92,10 @@ const validateOpts = declareOpts({
|
|||
type: 'array',
|
||||
default: ['png'],
|
||||
},
|
||||
platforms: {
|
||||
type: 'array',
|
||||
default: defaults.platforms,
|
||||
},
|
||||
watch: {
|
||||
type: 'boolean',
|
||||
default: false,
|
||||
|
@ -126,6 +131,7 @@ type Options = {
|
|||
getTransformOptions?: GetTransformOptions<*>,
|
||||
extraNodeModules: {},
|
||||
assetExts: Array<string>,
|
||||
platforms: Array<string>,
|
||||
watch: boolean,
|
||||
assetServer: AssetServer,
|
||||
transformTimeoutInterval: ?number,
|
||||
|
@ -200,6 +206,7 @@ class Bundler {
|
|||
watch: opts.watch,
|
||||
minifyCode: this._transformer.minify,
|
||||
moduleFormat: opts.moduleFormat,
|
||||
platforms: opts.platforms,
|
||||
polyfillModuleNames: opts.polyfillModuleNames,
|
||||
projectRoots: opts.projectRoots,
|
||||
resetCache: opts.resetCache,
|
||||
|
|
|
@ -107,6 +107,15 @@ describe('Resolver', function() {
|
|||
});
|
||||
});
|
||||
|
||||
it('passes custom platforms to the dependency graph', function() {
|
||||
new Resolver({ // eslint-disable-line no-new
|
||||
projectRoot: '/root',
|
||||
platforms: ['ios', 'windows', 'vr'],
|
||||
});
|
||||
const platforms = DependencyGraph.mock.calls[0][0].platforms;
|
||||
expect(platforms).toEqual(['ios', 'windows', 'vr']);
|
||||
});
|
||||
|
||||
pit('should get dependencies with polyfills', function() {
|
||||
var module = createModule('index');
|
||||
var deps = [module];
|
||||
|
|
|
@ -39,6 +39,10 @@ const validateOpts = declareOpts({
|
|||
type: 'array',
|
||||
required: true,
|
||||
},
|
||||
platforms: {
|
||||
type: 'array',
|
||||
required: true,
|
||||
},
|
||||
cache: {
|
||||
type: 'object',
|
||||
required: true,
|
||||
|
@ -94,7 +98,7 @@ class Resolver {
|
|||
(opts.blacklistRE && opts.blacklistRE.test(filepath));
|
||||
},
|
||||
providesModuleNodeModules: defaults.providesModuleNodeModules,
|
||||
platforms: defaults.platforms,
|
||||
platforms: opts.platforms,
|
||||
preferNativePlatform: true,
|
||||
watch: opts.watch,
|
||||
cache: opts.cache,
|
||||
|
|
|
@ -83,6 +83,10 @@ const validateOpts = declareOpts({
|
|||
type: 'array',
|
||||
default: defaults.assetExts,
|
||||
},
|
||||
platforms: {
|
||||
type: 'array',
|
||||
default: defaults.platforms,
|
||||
},
|
||||
transformTimeoutInterval: {
|
||||
type: 'number',
|
||||
required: false,
|
||||
|
|
Loading…
Reference in New Issue