Make Tangible symlinks
Mtsl listens to changes in some folder (using Chokidar) and copies changed files into another folder.
Actually, it is watcher CLI that copy files from source to destination
There are other tangible symlink packages available but every package has so many bugs. famous package is wml but that have many bugs. This package is working as required
Let's face it, sometimes symbolic links just aren't enough. Github has more than 80K 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 <linkId>
) 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.
npm install -g mtsl
# add the link to mtsl using `mtsl add -s <src> -d <dest>`
mtsl add -s ~/source-dir -d ~/User/destination-dir
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
make start symlink without add link
# it is same as `mtsl start` but it starts to make symlink without adding the link
mtsl startwithoutadd -s <src> -d <dest>
mtsl add -s <src> -d <dest>
(or mtsl add -s <src> -d <dest> -skip-prompt
)
Adds a link.
mtsl will not start listening to changes until you start it by running mtsl start <linkId>
.
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.
mtsl remove <linkId>
Removes a link.
mtsl removeall
Removes all link that made by using mtsl add
.
mtsl start <linkId>
Starts mtsl.
It first copies all watched files from source to destination folder and then waits for new changes to happen.
mtsl startwithoutadd -s <src> -d <dest>
Starts mtsl without add link.
it is same as mtsl start
but it starts to make symlink without adding the link.
mtsl list
Lists all links.
Shows each link's id and source/destination 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 from source to destination.
In the following example we are ignoring the ".git" and "node_modules" folders:
{
"ignore_dirs": [
".git",
"node_modules"
]
}
See the Contributing page.
Thanks goes to these wonderful people (emoji key):
Numan 🚇 💻 |
Copyright (c) 2020 Nomi9995. Licensed under the MIT license.