I am looking for a convenient way to access files in the root of my application while avoiding require() strings that look like:
require('../../../../myModule')
There are some good solutions out there for Node (https://gist.github.com/branneman/8048520) but I haven't seen a way to use global variables in React Native.
Does anyone have a clean solution to this problem?
Put code below on top of your
myModule
file:Then you can use
require('myModule')
in any other files.You can mark a directory as a package by adding a
package.json
within the root directory you want to resolve.e.g:
package.json
should look like this:Now you can use the following in all of you project files:
You can use this same method across other directories in your project, I don't think this works via
require
, although image paths seemed work.As noted in the comments, you may lose auto-complete in your editor (VSCode).
For Jetbrains IDE's there are some ongoing tickets here:
This might help with Jetbrains IDE's in the meantime.
Complementing @Tiagojdferreira
You can use his solution with babel-plugin-module-resolver library.
Install with:
Configure .babelrc adding plugins property like this:
Usage:
Hope this helps!
You can use global variables in react native, same as node, properties defined on global are accessible globally.
e.g.
Most of the node solutions in the gist above should work correctly.
One I've used in the past is defining a global function at the top directory level, usually on the first line like
Which simply allows deeply nested requires to be from the root, and avoids all of the
../../
business.However the other comment is true, if this is really an issue, there is probably something structurally deficient with the project.
From Marc Shilling's answer on https://github.com/facebook/react-native/issues/3099
Note for VS Code: This works, but be warned that you might lose intellisense and cmd/ctrl + click. Thanks Johan for the info about CS code