Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/garthenweb/require-symlink
Bypass annoying relative require paths to access deep nested files or folders.
https://github.com/garthenweb/require-symlink
Last synced: about 1 month ago
JSON representation
Bypass annoying relative require paths to access deep nested files or folders.
- Host: GitHub
- URL: https://github.com/garthenweb/require-symlink
- Owner: garthenweb
- License: mit
- Created: 2016-06-08T20:03:38.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2016-10-02T11:18:01.000Z (over 8 years ago)
- Last Synced: 2024-12-14T05:49:29.082Z (2 months ago)
- Language: JavaScript
- Homepage:
- Size: 12.7 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# require-symlink
Creates symlinks within the node_modules directory to bypass annoying relative require paths to access deep nested files or folders.
Instead of resolving a relative path like `require('../../../../config')` with require-symlink its possible to automatically create a symlink to this folder `require('symlink')`.
See [Better local require() paths for Node.js
](https://gist.github.com/branneman/8048520#1-the-symlink) for more information behind this idea.## Installation
``` bash
npm install --save-dev require-symlink
```## Usage
Add a section `requireSymlinks` into your package.json file and add as many key value pairs, with key as the shortcut and a value as the path, to the file/ folder into it.
```
// package.json
{
"requireSymlinks": {
"symlink": "./some/folder/to/link/to"
}
}
```Now execute `require-link` from command line to generate the links.
``` bash
require-link
```Its also possible to remove all symlinks by using `require-link unlink`.
It is recommented to add `require-link` into npm `postinstall` hook to execute it when installing other dependencies and ensure that it is available on all machines.
## Gotchas
### NPM Shrinkwrap
npm shrinkwrap does not allow symlinks in the node_modules folder and will throw an error. Its recommended to add `require-link unlink` to `preshrinkwrap` and `require-link` to `postshrinkwrap` to ensure that it will work as expected.
Please also not that `preshrinkwrap` and `postshrinkwrap` hooks are only available in npm >= v3.10.0. You can introduce a workaround by calling `npm run shrinkwrap` with the following script definition.
``` json
{
"scripts": {
"preshrinkwrap": "require-link unlink",
"shrinkwrap": "npm shrinkwrap",
"postshrinkwrap": "require-link"
}
}
```### Dependency Conflicts
With npm v3 its not predictable which folders will live inside your node_modules folder. As require-symlink will add a symlink into this folder it is required to not have a dependency with the same name as the symlink defined.
You may use a prefix that is uncommon for npm dependencies to be sure to not have any conflicts.
### @ Prefix
The @ prefix is used by npm and will result in unintentional behavior. You should use another prefix, for example the $ sign.
### Windows Usage
The library is working fine on windows. It is just required to execute the script with administration rights!
## License
Licensed under the [MIT License](https://opensource.org/licenses/mit-license.php).