
Research
Security News
Malicious PyPI Package Exploits Deezer API for Coordinated Music Piracy
Socket researchers uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
rev-web-assets
Advanced tools
Revision web asset filenames with cache busting content hash fingerprints
<img src=https://centerkey.com/graphics/center-key-logo.svg align=right width=200 alt=logo>
Revision web asset filenames with cache busting content hash fingerprints
rev-web-assets updates the asset filenames of a website to contain a eight-digit hex hash. The command's console output includes a timestamp and formatting helpful in build systems.
<img src=https://raw.githubusercontent.com/center-key/rev-web-assets/main/screenshot.png width=800 alt=screenshot>
Install package for node:
$ npm install --save-dev rev-web-assets
Run rev-web-assets
from the "scripts"
section of your package.json file.
Parameters:
Example package.json scripts:
"scripts": {
"revision": "rev-web-assets build/dev/web-app build/prod/web-app"
},
You can install rev-web-assets globally and then run it anywhere directly from the terminal.
Example terminal commands:
$ npm install --global rev-web-assets
$ rev-web-assets rev-web-assets build/dev/web-app build/prod/web-app
Command-line flags:
Flag | Description | Value |
---|---|---|
--cd | Change working directory before starting starting. | string |
--force | Revision (hash) all asset files even if not referenced. | N/A |
--manifest | Output the list of files to: manifest.json | N/A |
--meta-content-base | Make meta URLs, like "og:image", absolute. | string |
--note | Place to add a comment only for humans. | string |
--quiet | Suppress informational messages. | N/A |
--summary | Only print out the single line summary message. | N/A |
Examples:
rev-web-assets --cd=web source target
Same as: rev-web-assets web/source web/target
rev-web-assets source target --quiet
Displays no output.
rev-web-assets source target --summary
Displays the summary but not the individual filenames.
rev-web-assets source target --meta-content-base=https://example.net
Prepends the base to <meta>
URLs.
URLs in <meta>
tag content
attributes generally need to be absolute URLs.
Setting the --meta-content-base
flag to https://example.net
will transform the line of HTML from:
<meta property=og:image content="logo.png">
into something like:
<meta property=og:image content="https://example.net/logo.ad41b20.png">
The --manifest
flag produces a JSON file containing an array objects with details about each file:
export type ManifestDetail = {
origin: string, //source path of asset file
filename: string, //source filename of asset file
canonical: string, //normalized path used to lookup asset in manifest
canonicalFolder: string, //directory of the normalized path of the asset file
isHtml: boolean, //true if the asset file is HTML
isCss: boolean, //true if the asset file is CSS
bytes: number | null, //asset file size
hash: string | null, //eight-digit cache busting hex humber that changes if the asset changes
hashedFilename: string | null, //filename of the asset with hash inserted before the file extension
destFolder: string, //directory of the target asset
destPath: string | null, //folder and filename of the target asset
usedIn: string[] | null, //files that references the asset
references: number | null, //number of times the asset is referenced
};
Example:
{
"origin": "src/website/graphics/logo.png",
"filename": "logo.png",
"canonicalFolder": "graphics",
"canonical": "graphics/logo.png",
"bytes": 7203,
"isHtml": false,
"isCss": false,
"hash": "ad42b203",
"hashedFilename": "logo.ad42b203.png",
"destFolder": "target/website/graphics",
"destPath": "target/website/graphics/logo.ad42b203.png",
"usedIn": [
"index.html",
"products/index.html",
"style.css",
],
"references": 7
},
Even though rev-web-assets is primarily intended for build scripts, the package can easily be used programmatically in ESM and TypeScript projects.
Example:
import { revWebAssets } from 'rev-web-assets';
const options = { saveManifest: true };
const results = revWebAssets.revision('source', 'target', options);
console.log('Number of web files processed:', results.count);
See the TypeScript Declarations at the top of rev-web-assets.ts for documentation.
CLI Build Tools
Feel free to submit questions at:
github.com/center-key/rev-web-assets/issues
FAQs
Revision web asset filenames with cache busting content hash fingerprints
The npm package rev-web-assets receives a total of 184 weekly downloads. As such, rev-web-assets popularity was classified as not popular.
We found that rev-web-assets demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers 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.
Research
Security News
Socket researchers uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
Research
The Socket Research Team discovered a malicious npm package, '@ton-wallet/create', stealing cryptocurrency wallet keys from developers and users in the TON ecosystem.
Security News
Newly introduced telemetry in devenv 1.4 sparked a backlash over privacy concerns, leading to the removal of its AI-powered feature after strong community pushback.