Skip to content

Commit 6af5082

Browse files
committed
Add plugins documentation
1 parent 329452b commit 6af5082

File tree

1 file changed

+133
-1
lines changed

1 file changed

+133
-1
lines changed

README.md

Lines changed: 133 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ $ npm install metascraper --save
3838

3939
## Usage
4040

41-
Let's extract accurate information from the followgin article:
41+
Let's extract accurate information from the following article:
4242

4343
[![](https://raw.githubusercontent.com/microlinkhq/metascraper/add-comparison/support/screenshot.png)](http://www.bloomberg.com/news/articles/2016-05-24/as-zenefits-stumbles-gusto-goes-head-on-by-selling-insurance)
4444

@@ -96,6 +96,138 @@ Here is a list of the metadata that **metascraper** collects by default:
9696

9797
- **`url`** — eg. `http://motherboard.vice.com/read/google-wins-trial-against-oracle-saves-9-billion`<br/>
9898
The URL of the article.
99+
100+
## Customization
101+
102+
>? Configuration file follow the same approach than projects like Babel or Prettier.
103+
104+
**metascraper** is built out of plugins.
105+
106+
You can compose your own transformation pipeline using existing plugins or write your own.
107+
108+
When you load the library, implicitly it is loading [core plugins](#core-plugins).
109+
110+
Use a configuration file for load custom pipelines. The configuration file can be defined via:
111+
112+
- A `.metascraperrc` file, written in YAML or JSON, with optional extensions: `.yaml/.yml/.json/.js`.
113+
- A `prettier.config.js` file that exports an object.
114+
- A `"metascraper"` key in your `package.json` file.
115+
116+
The configuration file will be resolved starting from the location of the file being formatted, and searching up the file tree until a config file is (or isn't) found.
117+
118+
**Note:** Using a configuration file you need to explicitly add all the plugins that you want to use.
119+
120+
#### Basic Configuration
121+
122+
Declared an `array` of `rules`, specifying each rule as `string` name of the module to load.
123+
124+
##### JSON
125+
126+
```json
127+
// .metascraperrc
128+
{
129+
"rules": [
130+
"metascraper-author",
131+
"metascraper-date",
132+
"metascraper-description",
133+
"metascraper-image",
134+
"metascraper-logo",
135+
"metascraper-publisher",
136+
"metascraper-title",
137+
"metascraper-url"
138+
]
139+
}
140+
```
141+
142+
##### YAML
143+
144+
```yaml
145+
# .metascraperrc
146+
rules:
147+
- metascraper-author
148+
- metascraper-date
149+
- metascraper-description
150+
- metascraper-image
151+
- metascraper-logo
152+
- metascraper-publisher
153+
- metascraper-title
154+
- metascraper-url
155+
```
156+
157+
#### Advanced Configuration
158+
159+
Additionally, you can pass specific configuration per module using a `object` declaration:
160+
161+
##### JSON
162+
163+
```json
164+
// .metascraperrc
165+
{
166+
"rules": [
167+
"metascraper-author",
168+
"metascraper-date",
169+
"metascraper-description",
170+
"metascraper-image",
171+
"metascraper-logo",
172+
{"metascraper-clearbit-logo": {
173+
"format": "jpg"
174+
}},
175+
"metascraper-publisher",
176+
"metascraper-title",
177+
"metascraper-url"
178+
]
179+
}
180+
```
181+
182+
##### YAML
183+
184+
```yaml
185+
# .metascraperrc
186+
rules:
187+
- metascraper-author
188+
- metascraper-date
189+
- metascraper-description
190+
- metascraper-image
191+
- metascraper-logo
192+
- metascraper-clearbit-logo:
193+
format: jpg
194+
- metascraper-publisher
195+
- metascraper-title
196+
- metascraper-url
197+
```
198+
199+
## Plugins
200+
201+
?> Can't find a plugin that you want? Let's [open an issue](https://github.com/microlinkhq/metacraper/issues) to create it.
202+
203+
## Core Plugins
204+
205+
These plugins will be shipped with **metascraper** and loaded by default.
206+
207+
| Package | Version | Dependencies |
208+
|--------|-------|------------|
209+
| [`metascraper-author`](/packages/metascraper-author) | [![npm](https://img.shields.io/npm/v/metascraper-author.svg?style=flat-square)](https://www.npmjs.com/package/metascraper-author) | [![Dependency Status](https://david-dm.org/microlinkhq/metascraper.svg?path=packages/metascraper-author&?style=flat-square)](https://david-dm.org/microlinkhq/metascraper?path=packages/metascraper-author) |
210+
| [`metascraper-date`](/packages/metascraper-date) | [![npm](https://img.shields.io/npm/v/metascraper-date.svg?style=flat-square)](https://www.npmjs.com/package/metascraper-date) | [![Dependency Status](https://david-dm.org/microlinkhq/metascraper.svg?path=packages/metascraper-date&?style=flat-square)](https://david-dm.org/microlinkhq/metascraper?path=packages/metascraper-date) |
211+
| [`metascraper-description`](/packages/metascraper-description) | [![npm](https://img.shields.io/npm/v/metascraper-description.svg?style=flat-square)](https://www.npmjs.com/package/metascraper-description) | [![Dependency Status](https://david-dm.org/microlinkhq/metascraper.svg?path=packages/metascraper-description&?style=flat-square)](https://david-dm.org/microlinkhq/metascraper?path=packages/metascraper-description) |
212+
| [`metascraper-image`](/packages/metascraper-image) | [![npm](https://img.shields.io/npm/v/metascraper-image.svg?style=flat-square)](https://www.npmjs.com/package/metascraper-image) | [![Dependency Status](https://david-dm.org/microlinkhq/metascraper.svg?path=packages/metascraper-image&?style=flat-square)](https://david-dm.org/microlinkhq/metascraper?path=packages/metascraper-image) |
213+
| [`metascraper-logo`](/packages/metascraper-logo) | [![npm](https://img.shields.io/npm/v/metascraper-logo.svg?style=flat-square)](https://www.npmjs.com/package/metascraper-logo) | [![Dependency Status](https://david-dm.org/microlinkhq/metascraper.svg?path=packages/metascraper-logo&?style=flat-square)](https://david-dm.org/microlinkhq/metascraper?path=packages/metascraper-logo) |
214+
| [`metascraper-publisher`](/packages/metascraper-publisher) | [![npm](https://img.shields.io/npm/v/metascraper-publisher.svg?style=flat-square)](https://www.npmjs.com/package/metascraper-publisher) | [![Dependency Status](https://david-dm.org/microlinkhq/metascraper.svg?path=packages/metascraper-publisher&?style=flat-square)](https://david-dm.org/microlinkhq/metascraper?path=packages/metascraper-publisher) |
215+
| [`metascraper-title`](/packages/metascraper-title) | [![npm](https://img.shields.io/npm/v/metascraper-title.svg?style=flat-square)](https://www.npmjs.com/package/metascraper-title) | [![Dependency Status](https://david-dm.org/microlinkhq/metascraper.svg?path=packages/metascraper-title&?style=flat-square)](https://david-dm.org/microlinkhq/metascraper?path=packages/metascraper-title) |
216+
| [`metascraper-url`](/packages/metascraper-url) | [![npm](https://img.shields.io/npm/v/metascraper-url.svg?style=flat-square)](https://www.npmjs.com/package/metascraper-url) | [![Dependency Status](https://david-dm.org/microlinkhq/metascraper.svg?path=packages/metascraper-url&?style=flat-square)](https://david-dm.org/microlinkhq/metascraper?path=packages/metascraper-url) |
217+
218+
## Community Plugins
219+
220+
These plugins will not be shipped with **metascraper** by default and need to be specific using a configuration file.
221+
222+
| Package | Version | Dependencies |
223+
|--------|-------|------------|
224+
| [`metascraper-clearbit-logo`](/packages/metascraper-clearbit-logo) | [![npm](https://img.shields.io/npm/v/metascraper-clearbit-logo.svg?style=flat-square)](https://www.npmjs.com/package/metascraper-clearbit-logo) | [![Dependency Status](https://david-dm.org/microlinkhq/metascraper.svg?path=packages/metascraper-clearbit-logo&?style=flat-square)](https://david-dm.org/microlinkhq/metascraper?path=packages/metascraper-clearbit-logo) |
225+
226+
## Write your own plugin
227+
228+
Write your own plugin is the way to easily extend **metascraper** functionality.
229+
230+
*SOON*
99231

100232
## API
101233

0 commit comments

Comments
 (0)