56 lines
1.6 KiB
JavaScript
56 lines
1.6 KiB
JavaScript
/**
|
|
* 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 path = require('path');
|
|
const TerminalAdapter = require('yeoman-environment/lib/adapter.js');
|
|
const yeoman = require('yeoman-environment');
|
|
|
|
class CreateSuppressingTerminalAdapter extends TerminalAdapter {
|
|
constructor() {
|
|
super();
|
|
// suppress 'create' output generated by yeoman
|
|
this.log.create = function() {};
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Creates the template for a React Native project given the provided
|
|
* parameters:
|
|
* - projectDir: templates will be copied here.
|
|
* - argsOrName: project name or full list of custom arguments to pass to the
|
|
* generator.
|
|
*/
|
|
function init(projectDir, argsOrName) {
|
|
console.log('Setting up new React Native app in ' + projectDir);
|
|
const env = yeoman.createEnv(
|
|
undefined,
|
|
undefined,
|
|
new CreateSuppressingTerminalAdapter()
|
|
);
|
|
|
|
env.register(
|
|
require.resolve(path.join(__dirname, '../generator')),
|
|
'react:app'
|
|
);
|
|
|
|
// argv is for instance
|
|
// ['node', 'react-native', 'init', 'AwesomeApp', '--verbose']
|
|
// args should be ['AwesomeApp', '--verbose']
|
|
const args = Array.isArray(argsOrName)
|
|
? argsOrName
|
|
: [argsOrName].concat(process.argv.slice(4));
|
|
|
|
const generator = env.create('react:app', {args: args});
|
|
generator.destinationRoot(projectDir);
|
|
generator.run();
|
|
}
|
|
|
|
module.exports = init;
|