85 lines
1.6 KiB
Markdown
85 lines
1.6 KiB
Markdown
# posthtml-rename-id
|
|
|
|
[PostHTML](https://github.com/posthtml/posthtml) plugin to rename id attributes
|
|
and it's references. Inspired by [grunt-svgstore](https://github.com/FWeinb/grunt-svgstore).
|
|
|
|
Handle following cases:
|
|
|
|
- `href="#id"` and `xlink:href="#id"`
|
|
- `style` attribute values like `style="fill: url(#id)"`
|
|
- `<style>` tag values like `.selector {fill: url(#id)"}`
|
|
- any other attribute value like `attr="url(#id)"`
|
|
|
|
## Demo
|
|
|
|
Input
|
|
```html
|
|
<style>
|
|
.selector {fill: url(#qwe)}
|
|
</style>
|
|
|
|
<div id="qwe"></div>
|
|
<a href="#qwe"></a>
|
|
```
|
|
|
|
Output
|
|
```html
|
|
<style>
|
|
.selector {fill: url(#prefix_qwe)}
|
|
</style>
|
|
|
|
<div id="prefix_qwe"></div>
|
|
<a href="#prefix_qwe"></a>
|
|
```
|
|
|
|
## Install
|
|
|
|
```sh
|
|
npm install posthtml-rename-id
|
|
```
|
|
|
|
## Usage
|
|
|
|
```js
|
|
const posthtml = require('posthtml');
|
|
const rename = require('posthtml-rename-id');
|
|
|
|
posthtml()
|
|
.use(rename('prefix_[id]'))
|
|
.process('<div id="qwe"></div> <a href="#qwe"></a>')
|
|
.then(({ html }) => {
|
|
console.log(html); // <div id="prefix_qwe"></div> <a href="#prefix_qwe"></a>
|
|
});
|
|
```
|
|
|
|
## Configuration
|
|
|
|
### `pattern`
|
|
|
|
> Type: `string | function`<br>
|
|
> Default: `'[id]'`
|
|
|
|
Renaming pattern. `[id]` placeholder can be used as current id of an element.
|
|
If `pattern` provided as a function it will be called with current id as first argument.
|
|
Function should return the new id as string (`[id]` can be used as well).
|
|
|
|
## Examples
|
|
|
|
Uppercase all ids:
|
|
```js
|
|
posthtml([
|
|
renameId(id => id.toUpperCase())
|
|
]);
|
|
```
|
|
|
|
Rename all ids to `elem_{counter}`:
|
|
```js
|
|
let c = 0;
|
|
posthtml([
|
|
renameId((id) => { c++; return 'elem_' + c; })
|
|
]);
|
|
```
|
|
|
|
## LICENSE
|
|
|
|
[MIT](https://github.com/JetBrains/svg-mixer/blob/master/LICENSE)
|