id | title | sidebar_label |
---|---|---|
guide-build_hooks |
Build Hooks |
Build Hooks |
Sometimes you need to extend CLI functionality with custom build scripts. ReNative makes this easy for you.
create file: ./buildHooks/src/index.js
with this script (NOTE: every top-level method must return Promise):
import chalk from 'chalk';
const hooks = {
hello: c =>
new Promise((resolve, reject) => {
console.log(`\n${chalk.yellow('HELLO FROM BUILD HOOKS!')}\n`);
resolve();
})
};
const pipes = {};
export { pipes, hooks };
then simply run:
rnv hooks run -x hello
ReNative will transpile and execute it in real time!
index.js
is required entry point but you can create more complex scripts with multiple files/imports.
every top-level method gets invoked with ReNative config
object containing all necessary build information
You can utilize RNV CLI functionality inside of build hooks by simply importing rnv packages:
import {
Constants,
Runner,
App,
Platform,
Target,
Common,
Exec,
PlatformTools,
Doctor,
PluginTools,
SetupTools,
FileUtils
} from 'rnv';
Sometimes you want to execute specific hook automatically before/after certain ReNative build phase.
To get list of available hook pipes run:
$ rnv hooks pipes
You can connect your hook method to one of predefined pipes in your ./buildHooks/src/index.js
:
const pipes = {
'configure:before': hooks.hello
};
Example code above will execute hooks.hello()
before every time you run $ rnv configure
commands
const pipes = {
'configure:before': [hooks.hello, hooks.someOtherHook]
};
List of available pipe hooks:
'run:before', 'run:after',
'log:before', 'log:after',
'start:before', 'start:after',
'package:before', 'package:after',
'package:before', 'package:after',
'build:before', 'build:after',
'export:before', 'export:after',
'deploy:before', 'deploy:after',
'configure:before', 'configure:after',
'platform:configure:before', 'platform:configure:after'