https://github.com/numandev1/mtsl
Tangible symlinks using cokidar (CLI)
https://github.com/numandev1/mtsl
chokidar cli symlinks tangible watchman
Last synced: 7 days ago
JSON representation
Tangible symlinks using cokidar (CLI)
- Host: GitHub
- URL: https://github.com/numandev1/mtsl
- Owner: numandev1
- License: mit
- Created: 2020-06-26T19:47:32.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2022-10-02T19:24:46.000Z (over 2 years ago)
- Last Synced: 2025-05-03T03:23:35.375Z (17 days ago)
- Topics: chokidar, cli, symlinks, tangible, watchman
- Language: JavaScript
- Homepage:
- Size: 1.62 MB
- Stars: 22
- Watchers: 7
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
### Would you like to support me?
---
![]()
> Make Tangible symlinks
Mtsl listens to changes in some folder (using [Chokidar](https://www.npmjs.com/package/chokidar)) and copies changed files into another folder.
## Working
Actually, it is watcher **CLI** that copy files from source to destination## Why Mtsl not other packages?
There are other tangible symlink packages available but every package has so many bugs. famous package is [wml](https://github.com/wix/wml) but that have many bugs. This package is working as requiredLet's face it, sometimes symbolic links just aren't enough. Github has more than [80K issues](https://github.com/search?utf8=✓&q=support+for+symlinks&type=Issues) with the words "support for symlinks" in them.
Mtsl is a CLI tool that works pretty much like `ln -s [src] [dest]`. You first set up your links by using the `mtsl add -s [src] -d [dest]` command and then run the mtsl service (`mtsl start `) to start listening. link index can be get from `mtsl list` That's it!
Note that since Mtsl is based on Chokidar it **does not support symlinks**. lol.
## Install
```sh
npm install -g mtsl
```## Usage
```sh
# add the link to mtsl using `mtsl add -s -d `
mtsl add -s ~/source-dir -d ~/User/destination-dir
```
###### output
Added link: (0) /Users/username/source-dir -> /Users/username/User/destination-dir
```
# above command will give you link id what will use to start watching link that is added
mtsl start 0
```
## OR
make start symlink without add link
```sh
# it is same as `mtsl start` but it starts to make symlink without adding the link
mtsl startwithoutadd -s -d
````## Commands
#### add
`mtsl add -s -d `
(or `mtsl add -s -d -skip-prompt`)Adds a link.
mtsl will not start listening to changes until you start it by running `mtsl start `.
Each link is given an unique id, you can see all links and their ids by running `mtsl list`.
Links are saved to `src/links.json` in your `mtsl` install directory, meaning that
your configuration is specific to that `mtsl` install.#### remove
`mtsl remove `
Removes a link.
#### remove all
`mtsl removeall`
Removes all link that made by using `mtsl add`.
#### start
`mtsl start `
Starts mtsl.
It first copies all watched files from source to destination folder and then waits for new changes to happen.
#### startwithoutadd
`mtsl startwithoutadd -s -d `
Starts mtsl without add link.
it is same as `mtsl start` but it starts to make symlink without adding the link.
#### list
`mtsl list`
Lists all links.
Shows each link's id and source/destination folders.
## Miscellaneous
#### Ignored folders
When adding a new link Mtsl will try to detect if your source folder is a git repository or an npm package, it will then offer to ignore the ".git" and "node_modules" folders for you.
If you want to add more folders to your ignored folders first create a file named `.mtslconfig.json` in your source folder, this file should contain ignore directories for this folder which will not [CRUD](https://en.wikipedia.org/wiki/Create,_read,_update_and_delete) from source to destination.
In the following example we are ignoring the ".git" and "node_modules" folders:
```json
{
"ignore_dirs": [
".git",
"node_modules"
]
}
```## Contributing
See the [Contributing page](CONTRIBUTING.md).
## Contributors ✨
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
## License
Copyright (c) 2020 Nomi9995. Licensed under the MIT license.