file-janitor v0.0.1
file-janitor
Keep the public directory of your front-end assets clean (to be used after webpack or similar tools).
Usage example:
const FileJanitor = require('file-janitor');
FileJanitor.clean({
source: ['/path1/*.js', '/path2/*.css'], // string patterns for glob
destination: '/public', // must be a directory, will be created if it doesn't exists
separator: '-', // default is '.',
deleteOld: true // default is false
});The clean method will copy all files that match the patterns given in the source option to the directory given in destination.
The source files are expected have have a name with a hash, like app.53e25327dcbe3560d7b6.js (or app-53e25327dcbe3560d7b6.js, if the separator is '-' instead of '.'). This is the usual format of the chunks produced by webpack and related tools. If deleteOld is true, all files in the destination directory with the same prefix will be deleted (except files matched by source).
If destination already has a file with the same name, it will remain untouched.
Concrete example
Suppose the destination directory looks like this:
/public/app.123.js
/public/lib.456.js
/public/app.789.cssAfter webpack is executed we have a bunch of new files:
/path1/app.321.js
/path1/lib.456.js
/path2/app.987.cssAfter calling
FileJanitor.clean({
source: ['/path1/*.js', '/path2/*.css'],
destination: '/public',
deleteOld: true
});the new files will be copied to the destination directory and the old files will be deleted. That is:
/path1/app.321.jswill be copied to/public/public/app.123.jswill be deleted/path1/lib.456.jswill NOT be copied to/public/public/lib.456.jswill remain untouched/path1/app.987.csswill be copied to/public/public/app.789.csswill be deleted
That is, the destination directory will now be:
/public/app.321.js <-- new file
/public/lib.456.js <-- same file, was not touched
/public/app.987.css <-- new fileIMPORTANT NOTE: we assume files are 'new' and 'old' only by taking into account that they have the same prefix and different hashes (as well as being in different directories).
9 years ago