
Security News
curl Shuts Down Bug Bounty Program After Flood of AI Slop Reports
A surge of AI-generated vulnerability reports has pushed open source maintainers to rethink bug bounties and tighten security disclosure processes.
Append a unique hash to filename. Optionally create a manifest mapping. Optionally rewrite references to updated filenames.
Prepare front-end assets for cache-busting / versioning / hashing.
This plugin includes three functions:
rev(): Rename files by appending a unique hash, based on contents.revManifest(): Create a manifest that maps old filenames to newly versioned filenames. (optional)revReplace(): Update all references to versioned files. (optional)Make sure to set the files to never expire for this to have an effect.
$ npm install --save-dev @taskr/rev
The rev() task is the core method; thus is required for anything to occur.
Both revManifest() and revReplace() are optional plugins.
exports.default = function * (task) {
yield task.source('app/**/*')
.rev({
ignores: ['.html', '.jpg', '.png']
})
.revManifest({
dest: 'dist',
file: 'manifest.json',
trim: str => str.replace(/app\/client/i, 'assets')
})
.revReplace({
ignores: ['.php']
})
.target('dist');
}
Generate a unique hash (based on a file's contents) and append it to the filename.
bundle.js
//=> bundle-{hash}.js
bundle.min.js
//=> bundle-{hash}.min.js
Any files that are processed will receive two new keys: orig and hash. In addition, the base key will be updated with the new, versioned filename.
Type: array
Default: ['.png', '.jpg', '.jpeg', '.svg', '.gif', '.woff', '.ttf', '.eot', '.html', '.json']
A list of file extensions that should NOT be renamed/processed.
Note: This includes
.htmland.jsonwhilerevReplacedoes not.
Create a manifest file that relates old filenames to versioned counterparts.
Type: string
Default: 'rev-manifest.json'
The name of the manifest file to be created.
Type: string
Default: task.root
The directory where your manifest file should be created. Defaults to Taskr's root directory (where taskfile.js is found).
Type: boolean
Default: true
Whether or not the manifest's contents should be sorted alphabetically. (Does not add any performance / usage benefits.)
Type: string or function
Default: .
Edit the final keys & values within the manifest. If string, the value will be resolved relative to Taskr's root directory. Using a function provides more fine-tuned control.
yield task.source('app/client/*.js').rev()
.revManifest({trim: 'app'}).target('dist');
//=> "client/demo.js": "client/demo-1abd624s.js"
yield task.source('app/client/*.js').rev()
.revManifest({
trim: str => str.replace(/app\/client/i, 'assets')
}).target('dist');
//=> "assets/demo.js": "assets/demo-1abd624s.js"
Update references to all versioned files within a given source.
Matching files from within task.source() are available for inspection & modifications. Because of this, it is recommended that all your rev-* usage is extracted to a separate, production-only task whose source includes all development files.
Type: array
Default: ['.png', '.jpg', '.jpeg', '.svg', '.gif', '.woff', '.ttf', '.eot']
A list of file extensions whose content should not be updated.
Note: Unlike
.rev(), this list does not include.htmland.json.
Any issues or questions can be sent to the Taskr monorepo.
Please be sure to specify that you are using @taskr/rev.
MIT © Luke Edwards
FAQs
Append a unique hash to filename. Optionally create a manifest mapping. Optionally rewrite references to updated filenames.
We found that @taskr/rev demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
A surge of AI-generated vulnerability reports has pushed open source maintainers to rethink bug bounties and tighten security disclosure processes.

Product
Scan results now load faster and remain consistent over time, with stable URLs and on-demand rescans for fresh security data.

Product
Socket's new Alert Details page is designed to surface more context, with a clearer layout, reachability dependency chains, and structured review.