This is project create template boilerplate for react-native
- Features
- Features Optional
- Folder Structure Conventions
- Installation
- Document
- Inspired by
- Contributing
- Author
- License
- React-native template
- Reanimated v2
- TypeScript
- Support path alias
- React navigation
- React navigation shared element
- Styled components
- Recoil
- Eslint
- Prettier
- Commit lint
- Husky
- Lint-staged
- Config variables for React Native apps
- React native vector icons
- Support custom fonts
.
├── __tests__ # Folder test
├── ios # Folder ios
├── android # Folder android
├── src # Source files
| ├── assets # Place contain images, fonts ...
| | ├── fonts # Place contain custom fonts
| ├── components # Place contain common components
| ├── routes # Place contain react navigation
| ├── screens # Place contain screens
| ├── stores # Place contain global stores recoil
| ├── styles # Place contain styled theme global
├── LICENSE
└── README.md
npx react-native init <name project> --template react-native-template-haiau
- The project used library babel-plugin-module-resolver to support path alias import file
- Guide used:
- Step 1: Create any directory in the folder
src
- Step 2: Run command for the auto-apply new folder in path alias
npx react-native add-path-alias
- Step 1: Create any directory in the folder
- Guide used advanced commit lint custom rule scope:
- Assume you want to commit code with a prefix
CMS-XXXX
withXXXX
is number ticket of project
Example:
git commit -m "CMS-0001: Commit template"
- Please custom file
commitlint.config.json
:
module.exports = {
extends: ['@commitlint/config-conventional'],
plugins: ['commitlint-plugin-function-rules'],
rules: {
'type-empty': [2, 'always'],
'subject-empty': [2, 'always'],
'scope-enum': [0], // level: disabled
'function-rules/scope-enum': [
2, // level: error
'always',
(parsed) => {
const scopeEnum = parsed.header.split(':');
const scopes = [
{
regex: /CMS-(\d+)/g,
messageError: 'scope must is format CMS-XXXX',
},
];
const getIndex = scopes.findIndex(
(scope) => scope.regex.test(scopeEnum) === false,
);
if (getIndex === -1) {
return [true];
}
return [false, scopes[getIndex].messageError];
},
],
},
};
- Step 1: Add the font you want into the directory
./src/assets/fonts
- Step 2: Run command linking
npx react-native link
- Support detect language device
npx react-native add-i18n
if you want custom advanced i18n please reference the link i18n
Create template for react-native
Pull requests are always welcome! Feel free to open a new GitHub issue for any changes that can be made.
Working on your first Pull Request? You can learn how from this free series How to Contribute to an Open Source Project on GitHub
Pham Minh Hai Au