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:
Andrew Imm 2016-12-02 09:41:28 -08:00 committed by Facebook Github Bot
parent 7014885067
commit f4b738ff8e
5 changed files with 35 additions and 1 deletions

View File

@ -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) {

View File

@ -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,

View File

@ -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];

View File

@ -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,

View File

@ -83,6 +83,10 @@ const validateOpts = declareOpts({
type: 'array',
default: defaults.assetExts,
},
platforms: {
type: 'array',
default: defaults.platforms,
},
transformTimeoutInterval: {
type: 'number',
required: false,