Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yuanqing/asset-versioning
:card_file_box: Version your assets by appending a hash to the filename.
https://github.com/yuanqing/asset-versioning
asset cache nodejs
Last synced: 11 days ago
JSON representation
:card_file_box: Version your assets by appending a hash to the filename.
- Host: GitHub
- URL: https://github.com/yuanqing/asset-versioning
- Owner: yuanqing
- License: mit
- Created: 2018-03-12T15:28:04.000Z (almost 7 years ago)
- Default Branch: main
- Last Pushed: 2021-01-30T07:39:23.000Z (about 4 years ago)
- Last Synced: 2025-02-06T03:09:11.522Z (15 days ago)
- Topics: asset, cache, nodejs
- Language: JavaScript
- Homepage:
- Size: 47.9 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# asset-versioning [](https://www.npmjs.org/package/asset-versioning) [](https://travis-ci.org/yuanqing/asset-versioning)
> [Version your assets](https://www.alainschlesser.com/bust-cache-content-hash/) by appending a hash to the filename.
## Usage
```sh
$ asset-versioning build 'css/**/*.css' 'js/**/*.js' --outputDirectory build | asset-versioning replace 'build/**/*'
```Or, equivalently, using the API:
```js
const assetVersioning = require('asset-versioning')async function run () {
const manifest = await assetVersioning.build(['css/**/*.css', 'js/**/*.js'], {
outputDirectory: 'build'
})
assetVersioning.replace(['build/**/*'], manifest)
}
run()
```## CLI
### Build
```
$ asset-versioning build --helpUsage: asset-versioning build [globs] [options]
Versions the files matched by globs. Writes a JSON object mapping
the original filenames to the versioned filenames to stdout.Globs:
One or more globs.Options:
-b, --baseDirectory BASE_DIRECTORY Base directory to perform the
globbing. Defaults to './'.
-o, --outputDirectory OUTPUT_DIRECTORY Directory to output the
versioned files. Defaults
to './build'.
-h, --help Print this message.Example:
asset-versioning build 'css/**/*.css' 'js/**/*.js' --outputDirectory build > manifest.json
```### Replace
```
$ asset-versioning replace --helpUsage: asset-versioning replace [globs] [options]
Replaces original filenames with their versioned filenames (as
specified in a manifest) in the files matched by globs. Ignores
binary files matched by the globs.Globs:
One or more globs.Options:
-b, --baseDirectory BASE_DIRECTORY Base directory to perform the
globbing. Defaults to './'.
-m, --manifestFile MANIFEST_FILE A JSON file mapping the original
filenames to the versioned
filenames. Read from stdin if
this is not specified.
-h, --help Print this message.Example:
asset-versioning replace 'build/**/*' --manifestFile manifest.json
```## API
```js
const assetVersioning = require('asset-versioning')
```### assetVersioning.build(globs [, options])
Versions the files matched by `globs`. Returns a Promise for an object mapping the original filenames to the versioned filenames.
- `globs` is an array of one or more globs.
- `options` is an object literal:Key | Description | Default
:--|:--|:--
`baseDirectory` | Base directory to perform the globbing. | `process.cwd()`
`outputDirectory` | Directory to output the versioned files. | `./build`### assetVersioning.replace(globs, manifest [, options])
Replaces original filenames with their versioned filenames (as specified in the `manifest`) in the files matched by `globs`. Ignores binary files matched by the `globs`.
- `globs` is an array of one or more globs.
- `manifest` is an object mapping the original filenames to the versioned filenames.
- `options` is an object literal:Key | Description | Default
:--|:--|:--
`baseDirectory` | Base directory to perform the globbing. | `process.cwd()`## Installation
Install via [yarn](https://yarnpkg.com):
```sh
$ yarn add --dev asset-versioning
```Or [npm](https://npmjs.com):
```sh
$ npm install --save-dev asset-versioning
```## License
[MIT](LICENSE.md)