create-react-native-library
Version:
CLI to scaffold React Native libraries
91 lines (85 loc) • 3.94 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.printErrorHelp = printErrorHelp;
exports.printNextSteps = printNextSteps;
exports.printUsedRNVersion = printUsedRNVersion;
var _path = _interopRequireDefault(require("path"));
var _fsExtra = _interopRequireDefault(require("fs-extra"));
var _dedent = _interopRequireDefault(require("dedent"));
var _kleur = _interopRequireDefault(require("kleur"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
async function printNextSteps(local, folder, config) {
if (local) {
let linked;
const packageManager = (await _fsExtra.default.pathExists(_path.default.join(process.cwd(), 'yarn.lock'))) ? 'yarn' : 'npm';
const packageJsonPath = _path.default.join(process.cwd(), 'package.json');
if (await _fsExtra.default.pathExists(packageJsonPath)) {
const packageJson = await _fsExtra.default.readJSON(packageJsonPath);
const isReactNativeProject = Boolean(packageJson.dependencies?.['react-native']);
if (isReactNativeProject) {
packageJson.dependencies = packageJson.dependencies || {};
packageJson.dependencies[config.project.slug] = packageManager === 'yarn' ? `link:./${_path.default.relative(process.cwd(), folder)}` : `file:./${_path.default.relative(process.cwd(), folder)}`;
await _fsExtra.default.writeJSON(packageJsonPath, packageJson, {
spaces: 2
});
linked = true;
}
}
console.log((0, _dedent.default)(`
${_kleur.default.magenta(`${_kleur.default.bold('Get started')} with the project`)}${_kleur.default.gray(':')}
${(linked ? `- Run ${_kleur.default.blue(`${packageManager} install`)} to link the library\n` : `- Link the library at ${_kleur.default.blue(_path.default.relative(process.cwd(), folder))} based on your project setup\n`) + `- Run ${_kleur.default.blue('pod install --project-directory=ios')} to install dependencies with CocoaPods\n` + `- Run ${_kleur.default.blue('npx react-native run-android')} or ${_kleur.default.blue('npx react-native run-ios')} to build and run the app\n` + `- Import from ${_kleur.default.blue(config.project.slug)} and use it in your app.`}
${_kleur.default.yellow(`Good luck!`)}
`));
} else {
const platforms = {
ios: {
name: 'iOS',
color: 'cyan'
},
android: {
name: 'Android',
color: 'green'
},
...(config.example === 'expo' ? {
web: {
name: 'Web',
color: 'blue'
}
} : null)
};
console.log((0, _dedent.default)(`
${_kleur.default.magenta(`${_kleur.default.bold('Get started')} with the project`)}${_kleur.default.gray(':')}
${_kleur.default.gray('$')} yarn
${Object.entries(platforms).map(([script, {
name,
color
}]) => `
${_kleur.default[color](`Run the example app on ${_kleur.default.bold(name)}`)}${_kleur.default.gray(':')}
${_kleur.default.gray('$')} yarn example ${script}`).join('\n')}
${_kleur.default.yellow(`See ${_kleur.default.bold('CONTRIBUTING.md')} for more details. Good luck!`)}
`));
}
}
function printErrorHelp(message, error) {
console.log('\n');
if (error) {
console.log(_kleur.default.red(error.message));
throw error;
}
if (message) {
console.log(_kleur.default.red(message));
} else {
console.log(_kleur.default.red(`An unknown error occurred. See '--help' for usage guide.`));
}
process.exit(1);
}
function printUsedRNVersion(version, config) {
if (config.example === 'vanilla') {
console.log(`${_kleur.default.blue('ℹ')} Using ${_kleur.default.cyan(`react-native@${version}`)} for the example`);
} else {
console.warn(`${_kleur.default.yellow('⚠')} Ignoring --react-native-version for unsupported example type: ${_kleur.default.cyan(config.example)}`);
}
}
//# sourceMappingURL=inform.js.map