react-native-cli initial commit
A cli package that is responsible for: * starting a new react-native project * forwarding all other commands to a cli module in react-native * currently cli.js knows how to start the webserver, in the future it may do things like build the app etc.
This commit is contained in:
parent
e2e123c2ab
commit
98097caa6f
|
@ -0,0 +1,48 @@
|
||||||
|
/**
|
||||||
|
* Copyright 2004-present Facebook. All Rights Reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var spawn = require('child_process').spawn;
|
||||||
|
var path = require('path');
|
||||||
|
|
||||||
|
function printUsage() {
|
||||||
|
console.log([
|
||||||
|
'Usage: react-native <command>',
|
||||||
|
'',
|
||||||
|
'Commands:',
|
||||||
|
' start: starts the webserver',
|
||||||
|
].join('\n'));
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
function run() {
|
||||||
|
var args = process.argv.slice(2);
|
||||||
|
if (args.length === 0) {
|
||||||
|
printUsage();
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (args[0]) {
|
||||||
|
case 'start':
|
||||||
|
spawn('sh', [
|
||||||
|
path.resolve(__dirname, 'packager', 'packager.sh'),
|
||||||
|
'--projectRoots',
|
||||||
|
process.cwd(),
|
||||||
|
], {stdio: 'inherit'});
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.error('Command `%s` unrecognized', args[0]);
|
||||||
|
printUsage();
|
||||||
|
}
|
||||||
|
// Here goes any cli commands we need to
|
||||||
|
}
|
||||||
|
|
||||||
|
function init() {
|
||||||
|
spawn('sh', [path.resolve(__dirname, 'init.sh')], {stdio:'inherit'});
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
run: run,
|
||||||
|
init: init,
|
||||||
|
};
|
|
@ -0,0 +1,82 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copyright 2004-present Facebook. All Rights Reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var spawn = require('child_process').spawn;
|
||||||
|
var path = require('path');
|
||||||
|
|
||||||
|
var CLI_MODULE_PATH = path.resolve(
|
||||||
|
process.cwd(),
|
||||||
|
'node_modules',
|
||||||
|
'react-native',
|
||||||
|
'cli'
|
||||||
|
);
|
||||||
|
|
||||||
|
var cli;
|
||||||
|
try {
|
||||||
|
cli = require(CLI_MODULE_PATH);
|
||||||
|
} catch(e) {}
|
||||||
|
|
||||||
|
if (cli) {
|
||||||
|
cli.run();
|
||||||
|
} else {
|
||||||
|
var args = process.argv.slice(2);
|
||||||
|
if (args.length === 0) {
|
||||||
|
console.error(
|
||||||
|
'You did not pass any commands, did you mean to run init?'
|
||||||
|
);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (args[0] === 'init') {
|
||||||
|
init();
|
||||||
|
} else {
|
||||||
|
console.error(
|
||||||
|
'Command `%s` unrecognized.' +
|
||||||
|
'Did you mean to run this inside a react-native project?',
|
||||||
|
args[0]
|
||||||
|
);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function init() {
|
||||||
|
console.log(
|
||||||
|
'This will walk you through creating a new react-native project',
|
||||||
|
'in the current directory'
|
||||||
|
);
|
||||||
|
|
||||||
|
console.log('Running npm init');
|
||||||
|
run('npm init', function(e) {
|
||||||
|
if (e) {
|
||||||
|
console.error('npm init failed');
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
run('npm install --save react-native', function(e) {
|
||||||
|
if (e) {
|
||||||
|
console.error('`npm install --save react-native` failed');
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
var cli = require(CLI_MODULE_PATH);
|
||||||
|
cli.init();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function run(command, cb) {
|
||||||
|
var parts = command.split(/\s+/);
|
||||||
|
var cmd = parts[0];
|
||||||
|
var args = parts.slice(1);
|
||||||
|
var proc = spawn(cmd, args, {stdio: 'inherit'});
|
||||||
|
proc.on('close', function(code) {
|
||||||
|
if (code !== 0) {
|
||||||
|
cb(new Error('Command exited with a non-zero status'));
|
||||||
|
} else {
|
||||||
|
cb(null);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"name": "react-native-cli",
|
||||||
|
"version": "0.0.0",
|
||||||
|
"description": "The ReactNative cli tools",
|
||||||
|
"main": "index.js",
|
||||||
|
"bin": {
|
||||||
|
"react-native": "index.js"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue