Our team has released a new package called file-system-watcher. As the name implies, this package can watch changes in the file system and let you act on those changes.
Using the package #
Here’s a simple example that allows you to run some code when a new file gets added.
<span class="hljs-keyword">use</span> <span class="hljs-title">Spatie</span><span class="hljs-title">Watcher</span><span class="hljs-title">Watch</span>;
<p>Watch::path($directory)
->onFileCreated(<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-params">(string $newFilePath)</span> </span>{
<span class="hljs-comment">// do something...</span>
})
->start();
</p>
After calling start
, the watcher will start a never-ending loop. When a file is created in the given $directory
, the closure passed in onFileCreated
will be executed.
There are methods for each kind of file change onFileCreated()
, onFileUpdated()
, onFileDeleted()
, onDirectoryCreated()
, onDirectoryDeleted()
.
Pretty simple, right?
How it works under the hood #
Under the hood, this package leverages (https://github.com/paulmillr/chokidar), a popular JS library that can efficiently handle file system changes without requiring much memory or CPU.
To see a demo of the package and learn how we integrated our PHP code with a JS package, watch this fragment of a stream in which I introduced our file-system-watcher.
In closing #
There are a few more options available in file-system-watcher. Head over to the readme on GitHub to learn more.
Be sure also to check out the packages our team has created previously. I’m sure there is something that you could use in your next project.