metalsmith-watch
Metalsmith plugin to watch for changes and trigger partial and full rebuilds.
Installation
$ npm install metalsmith-watch
Usage
var metalsmith = require('metalsmith');
var watch = require('metalsmith-watch');
metalsmith(__dirname)
.use(
watch({
paths: {
"${source}/**/*": true,
"templates/**/*": "**/*.md",
},
livereload: true,
})
)
.build();
Options
{"${source}/**/*": true}
)
paths (default: Map of paths to trigger rebuild. Both keys and value accept a glob pattern.
{
"file(s) to watch": "file(s) to rebuild"
}
Value accept a boolean. When a boolean is used, only watched files changed will be rebuilded.
{
"${source}/**/*": true, // every changed files will trigger a rebuild of themselves
"templates/**/*": "**/*", // every templates changed will trigger a rebuild of all files
}
Please note that:
-
${source}
is replaced bymetalsmith.source()
. -
values of the map are relative to
metalsmith.source()
(because it's the only place where to build files)
false
)
livereload (default: Allows you to enable a livereload server.
Using a boolean will enable a livereload server on port the default port is 35729
.
Accept a port number to start on the port you need.
To get live reload working properly, you should add the following <script>
in your templates files to enable livereloading of each pages:
<script src="http://localhost:35729/livereload.js"></script>
Make sure to update the port number in the script above accordingly to the port specified.
undefined
)
onUpdateCallback (default: Allows you to define a function to get called after metalsmith has reloaded all the files. If a function is passed, this will be called with the updated files and all options passed.
{
onUpdateCallback: function (files, options) {
// Called on every rebuild
}
}
function(...args) { console.log(prefix, ...args)}
)
log (default: Function used to display the logs.
true
)
invalidateCache (default: Allows you to enable cache invalidation for js files. Convenient if you use some js files for templates (eg: React templates) to get updated components. If disabled you won't get update for changed js files as node/iojs use a cache.