Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gyanendrokh/react-native-yarn-workspaces-v2
React Native support for Yarn Workspaces.
https://github.com/gyanendrokh/react-native-yarn-workspaces-v2
Last synced: 26 days ago
JSON representation
React Native support for Yarn Workspaces.
- Host: GitHub
- URL: https://github.com/gyanendrokh/react-native-yarn-workspaces-v2
- Owner: GyanendroKh
- License: mit
- Created: 2020-09-18T04:02:51.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2020-09-21T04:59:30.000Z (over 4 years ago)
- Last Synced: 2024-12-28T00:32:17.613Z (26 days ago)
- Language: JavaScript
- Size: 19.5 KB
- Stars: 7
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# react-native-yarn-workspaces-v2
React Native support for Yarn Workspaces.
# Note
This package only run on `macOs` and `Linux` and haven't tested on `ios`.
To use this package you have to create the react native project using `npx react-native init`. If you are using `expo`, use [expo-yarn-workspaces](https://github.com/expo/expo/tree/master/packages/expo-yarn-workspaces) instead.**Inspired by [expo-yarn-workspaces](https://github.com/expo/expo/tree/master/packages/expo-yarn-workspaces)**. The inner working of this package is same as `expo-yarn-workspaces`, check it for more details. This package is specifically tweaked to work with `bare react-native` project.
# Installation
Install the package as a dev dependency.
```console
foo@bar:~$ yarn add -D react-native-yarn-workspaces-v2
or
foo@bar:~$ npm i --save-dev react-native-yarn-workspaces-v2
```# Usage
### Add a `postinstall` script to `package.json`
Add `"postinstall": "react-native-yarn-workspaces-v2"` under the script object in the app's `package.json`.
### Modify `metro.config.js`.
If the file does not exist, create it.
```js
const {
extraNodeModules,
watchFolders
} = require('react-native-yarn-workspaces-v2')(__dirname);module.exports = {
watchFolders,
resolver: {
extraNodeModules
},
// Generated by `react-native`.
transformer: {
getTransformOptions: async () => ({
transform: {
experimentalImportSupport: false,
inlineRequires: false
}
})
}
// end
};
```This will tell the `metro bundler` to look for packages on the `yarn workspaces`' root `node_modules` directory and resolve all the `symlink` to their real path.
### Adding additional packages to symlink.
To add additional packages to symlink. Add `workspaces-symlink` inside `package.json` with the packages you want to symlink as value (array).Example:
```json
// package.json
{
...
"workspaces-symlink": [
"react-native-vector-icons"
]
}
```
**(Android)**
If you configure [`react-native-vector-icons`](https://github.com/oblador/react-native-vector-icons).
```gradle
project.ext.vectoricons = [
iconFontNames: [ 'MaterialCommunityIcons.ttf' ]
]
apply from: "../../node_modules/react-native-vector-icons/fonts.gradle"
```
And add the above in your `app/build.gradle` file it won't work. The `fonts.gradle` is located at the workspace root `node_modules`. So, you either have to specify the path to the workspace root `node_modules` or symlink the package to make it work.# LICENSE
- [Copyright (c) 2020 Gyanendro Kh](https://github.com/GyanendroKh/react-native-yarn-workspaces-v2/blob/master/LICENSE)
- [Copyright (c) 2015-present 650 Industries, Inc. (aka Expo)](https://github.com/expo/expo/blob/master/LICENSE)