https://github.com/pnpm/symlink-dir
Cross-platform directory symlinking
https://github.com/pnpm/symlink-dir
cross-platform filesystem node nodejs symlink
Last synced: about 1 month ago
JSON representation
Cross-platform directory symlinking
- Host: GitHub
- URL: https://github.com/pnpm/symlink-dir
- Owner: pnpm
- License: mit
- Created: 2017-01-27T20:37:44.000Z (over 8 years ago)
- Default Branch: main
- Last Pushed: 2025-04-29T10:09:14.000Z (about 2 months ago)
- Last Synced: 2025-05-15T08:23:57.099Z (about 1 month ago)
- Topics: cross-platform, filesystem, node, nodejs, symlink
- Language: TypeScript
- Homepage:
- Size: 382 KB
- Stars: 74
- Watchers: 18
- Forks: 1
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# symlink-dir
> Cross-platform directory symlinking
[](https://www.npmjs.com/package/symlink-dir)
* Always uses "junctions" on Windows. Even though support for "symbolic links" was added in Vista+, users by default lack permission to create them
* Any file or directory, that has the destination name, is renamed before creating the link## Installation
```sh
pnpm add symlink-dir
```## CLI Usage
Lets suppose you'd like to self-require your package. You can link it to its own `node_modules`:
```sh
# from -> to
symlink-dir . node_modules/my-package
```## API Usage
```js
'use strict'
const symlinkDir = require('symlink-dir')
const path = require('path')symlinkDir('src', 'node_modules/src')
.then(result => {
console.log(result)
//> { reused: false }return symlinkDir('src', 'node_modules/src')
})
.then(result => {
console.log(result)
//> { reused: true }
})
.catch(err => console.error(err))
```## API
### `symlinkDir(target, path, opts?): Promise<{ reused: boolean, warn?: string }>`
### `symlinkDir.sync(target, path, opts?): { reused: boolean, warn?: string }`Creates the link called `path` pointing to `target`.
Options:
* `overwrite` - *boolean* - is `true` by default. When `false`, existing files at dest are not overwritten.
Result:
* `reused` - *boolean* - is `true` if the symlink already existed pointing to the `target`.
* `warn` - *string* - any issues that happened during linking (it does mean a failure).## License
[MIT](./LICENSE) © [Zoltan Kochan](https://www.kochan.io)