mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-03-06 17:34:07 +08:00
Added bundle command using ReactPackager
Added bundle script Pipe http response straight to file Used ReactPackager directly, minor fixes Added error handling to fs.writeFile Changed .then to .done
This commit is contained in:
@@ -29,9 +29,10 @@
|
||||
jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/Examples/SampleApp/index.ios.bundle"];
|
||||
|
||||
// OPTION 2
|
||||
// Load from pre-bundled file on disk. To re-generate the static bundle, run
|
||||
// Load from pre-bundled file on disk. To re-generate the static bundle,
|
||||
// from the root of your project directory, run
|
||||
//
|
||||
// $ curl 'http://localhost:8081/Examples/SampleApp/index.ios.bundle?dev=false&minify=true' -o iOS/main.jsbundle
|
||||
// $ react-native bundle
|
||||
//
|
||||
// and uncomment the next following line
|
||||
// jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
|
||||
|
||||
65
local-cli/bundle.js
Normal file
65
local-cli/bundle.js
Normal file
@@ -0,0 +1,65 @@
|
||||
var http = require('http');
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
var chalk = require('chalk');
|
||||
var blacklist = require('../packager/blacklist.js');
|
||||
var ReactPackager = require('../packager/react-packager');
|
||||
|
||||
var OUT_PATH = 'iOS/main.jsbundle';
|
||||
|
||||
function getBundle(flags) {
|
||||
|
||||
var options = {
|
||||
projectRoots: [path.resolve(__dirname, '../../..')],
|
||||
transformModulePath: require.resolve('../packager/transformer.js'),
|
||||
assetRoots: [path.resolve(__dirname, '../../..')],
|
||||
cacheVersion: '2',
|
||||
blacklistRE: blacklist('ios')
|
||||
};
|
||||
|
||||
var url = '/index.ios.bundle?dev=' + flags.dev;
|
||||
|
||||
console.log('Building package...');
|
||||
ReactPackager.buildPackageFromUrl(options, url)
|
||||
.done(function(bundle) {
|
||||
console.log('Build complete');
|
||||
fs.writeFile(OUT_PATH, bundle.getSource({
|
||||
inlineSourceMap: false,
|
||||
minify: flags.minify
|
||||
}), function(err) {
|
||||
if (err) {
|
||||
console.log(chalk.red('Error saving bundle to disk'));
|
||||
throw err;
|
||||
} else {
|
||||
console.log('Successfully saved bundle to ' + OUT_PATH);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function showHelp() {
|
||||
console.log([
|
||||
'Usage: react-native bundle [options]',
|
||||
'',
|
||||
'Options:',
|
||||
' --dev\t\tsets DEV flag to true',
|
||||
' --minify\tminify js bundle'
|
||||
].join('\n'));
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
init: function(args) {
|
||||
var flags = {
|
||||
help: args.indexOf('--help') !== -1,
|
||||
dev: args.indexOf('--dev') !== -1,
|
||||
minify: args.indexOf('--minify') !== -1
|
||||
}
|
||||
|
||||
if (flags.help) {
|
||||
showHelp();
|
||||
} else {
|
||||
getBundle(flags);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,7 @@
|
||||
var spawn = require('child_process').spawn;
|
||||
var path = require('path');
|
||||
var install = require('./install.js');
|
||||
var bundle = require('./bundle.js');
|
||||
|
||||
function printUsage() {
|
||||
console.log([
|
||||
@@ -14,7 +15,8 @@ function printUsage() {
|
||||
'',
|
||||
'Commands:',
|
||||
' start: starts the webserver',
|
||||
' install: installs npm react components'
|
||||
' install: installs npm react components',
|
||||
' bundle: builds the javascript bundle for offline use'
|
||||
].join('\n'));
|
||||
process.exit(1);
|
||||
}
|
||||
@@ -36,6 +38,9 @@ function run() {
|
||||
case 'install':
|
||||
install.init();
|
||||
break;
|
||||
case 'bundle':
|
||||
bundle.init(args);
|
||||
break;
|
||||
default:
|
||||
console.error('Command `%s` unrecognized', args[0]);
|
||||
printUsage();
|
||||
|
||||
Reference in New Issue
Block a user