Skip to content

Commit 71b83b3

Browse files
committed
Add possibility to load rules from config file
Use default rules as fallback
1 parent 1bf8ee6 commit 71b83b3

File tree

4 files changed

+36
-21
lines changed

4 files changed

+36
-21
lines changed

packages/metascraper/package.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
"dependencies": {
5858
"@metascraper/helpers": "~0.0.0",
5959
"cheerio": "~1.0.0-rc.2",
60+
"cosmiconfig": "~3.1.0",
6061
"lodash": "~4.17.4",
6162
"sanitize-html": "~1.16.1"
6263
},
@@ -78,5 +79,10 @@
7879
"coveralls": "nyc report --reporter=text-lcov | coveralls",
7980
"test": "TZ=UTC NODE_ENV=test nyc mocha test"
8081
},
81-
"license": "MIT"
82+
"license": "MIT",
83+
"standard": {
84+
"env": [
85+
"mocha"
86+
]
87+
}
8288
}

packages/metascraper/src/index.js

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,13 @@
33
const { isUrl } = require('@metascraper/helpers')
44
const { isEmpty } = require('lodash')
55

6+
const loadRules = require('./load-rules')
67
const loadHTML = require('./load-html')
78
const getData = require('./get-data')
89

9-
const rules = [
10-
require('metascraper-author'),
11-
require('metascraper-date'),
12-
require('metascraper-description'),
13-
require('metascraper-image'),
14-
require('metascraper-logo'),
15-
require('metascraper-publisher'),
16-
require('metascraper-title'),
17-
require('metascraper-url')
18-
]
19-
2010
module.exports = async ({ url, html } = {}) => {
11+
const rules = await loadRules()
12+
2113
if (!isUrl(url)) throw new TypeError('You need to provide a valid url.')
2214
if (isEmpty(html)) {
2315
throw new TypeError('You need to provide a valid HTML markup.')
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
'use strict'
2+
3+
const config = require('cosmiconfig')('metascraper').load(process.cwd())
4+
5+
module.exports = () =>
6+
Promise.resolve(config).then(
7+
configFile =>
8+
configFile || [
9+
require('metascraper-author'),
10+
require('metascraper-date'),
11+
require('metascraper-description'),
12+
require('metascraper-image'),
13+
require('metascraper-logo'),
14+
require('metascraper-publisher'),
15+
require('metascraper-title'),
16+
require('metascraper-url')
17+
]
18+
)

packages/metascraper/test/unit/interface.js

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,11 @@ it('html is required', async () => {
2121
}
2222
})
2323

24-
// it('plugins support', async () => {
25-
// const metascraper = createMetascraper({ plugins: [clearbitLogo] })
26-
// const url = 'https://facebook.com'
27-
// const html = '<div></div>'
28-
// const meta = await metascraper({ url, html })
29-
// should(meta.logo).be.equal(
30-
// 'https://logo.clearbit.com/facebook.com?size=128&format=png'
31-
// )
32-
// })
24+
it('loading custom rules', async () => {
25+
const url = 'https://facebook.com'
26+
const html = '<div></div>'
27+
const meta = await metascraper({ url, html })
28+
should(meta.logo).be.equal(
29+
'https://logo.clearbit.com/facebook.com?size=128&format=png'
30+
)
31+
})

0 commit comments

Comments
 (0)