Skip to content

Commit af41361

Browse files
authored
Merge pull request #49 from ndaidong/v6.x.x
v6.x.x
2 parents c911e49 + b215fdc commit af41361

File tree

11 files changed

+196
-3
lines changed

11 files changed

+196
-3
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ To read & normalize RSS/ATOM/JSON feed data.
1818
```js
1919
import { read } from 'feed-reader'
2020

21+
// with CommonJS environments
22+
// const { read } = require('./dist/cjs/feed-reader.js')
23+
2124
const url = 'https://news.google.com/rss'
2225

2326
read(url).then((feed) => {

build.js

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
/**
2+
* build.js
3+
* @ndaidong
4+
**/
5+
6+
import { readFileSync, writeFileSync, rmSync, mkdirSync } from 'fs'
7+
8+
import { buildSync } from 'esbuild'
9+
10+
const pkg = JSON.parse(readFileSync('./package.json', { encoding: 'utf-8' }))
11+
12+
rmSync('dist', {
13+
force: true,
14+
recursive: true
15+
})
16+
mkdirSync('dist')
17+
18+
const buildTime = (new Date()).toISOString()
19+
const comment = [
20+
`// ${pkg.name}@${pkg.version}, by ${pkg.author}`,
21+
`built with esbuild at ${buildTime}`,
22+
`published under ${pkg.license} license`
23+
].join(' - ')
24+
25+
/**
26+
* @type {import('esbuild').BuildOptions}
27+
* */
28+
const baseOpt = {
29+
entryPoints: ['src/main.js'],
30+
bundle: true,
31+
charset: 'utf8',
32+
target: ['es2020', 'node14'],
33+
minify: true,
34+
write: true,
35+
sourcemap: 'external',
36+
external: ['canvas']
37+
}
38+
39+
/**
40+
* @type {import('esbuild').BuildOptions}
41+
*/
42+
const cjsVersion = {
43+
...baseOpt,
44+
platform: 'node',
45+
format: 'cjs',
46+
mainFields: ['main'],
47+
outfile: `dist/cjs/${pkg.name}.js`,
48+
banner: {
49+
js: comment
50+
}
51+
}
52+
buildSync(cjsVersion)
53+
54+
const cjspkg = {
55+
name: pkg.name + '-cjs',
56+
version: pkg.version,
57+
main: `./${pkg.name}.js`
58+
}
59+
writeFileSync(
60+
'dist/cjs/package.json',
61+
JSON.stringify(cjspkg, null, ' '),
62+
'utf8'
63+
)
64+
65+
/**
66+
* @type {import('esbuild').BuildOptions}
67+
*/
68+
const browserVersion = {
69+
...baseOpt,
70+
platform: 'browser',
71+
format: 'esm',
72+
outfile: `dist/${pkg.name}.browser.js`,
73+
banner: {
74+
js: comment
75+
}
76+
}
77+
buildSync(browserVersion)

build.test.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// release.test
2+
3+
/* eslint-env jest */
4+
5+
import {
6+
existsSync,
7+
readFileSync
8+
} from 'fs'
9+
10+
const pkg = JSON.parse(readFileSync('./package.json'))
11+
12+
const cjsFile = `./dist/cjs/${pkg.name}.js`
13+
const cjsPkg = JSON.parse(readFileSync('./dist/cjs/package.json'))
14+
15+
describe('Validate commonjs version output', () => {
16+
test(`Check if ${cjsFile} created`, () => {
17+
expect(existsSync(cjsFile)).toBeTruthy()
18+
})
19+
test('Check if cjs package info updated', () => {
20+
expect(cjsPkg.name).toEqual(`${pkg.name}-cjs`)
21+
expect(cjsPkg.version).toEqual(pkg.version)
22+
})
23+
const constent = readFileSync(cjsFile, 'utf8')
24+
const lines = constent.split('\n')
25+
test('Check if file meta contains package info', () => {
26+
expect(lines[0].includes(`${pkg.name}@${pkg.version}`)).toBeTruthy()
27+
expect(lines[0].includes(pkg.author)).toBeTruthy()
28+
expect(lines[0].includes(pkg.license)).toBeTruthy()
29+
})
30+
})

dist/cjs/feed-reader.js

Lines changed: 27 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/cjs/feed-reader.js.map

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/cjs/package.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"name": "feed-reader-cjs",
3+
"version": "6.0.1",
4+
"main": "./feed-reader.js"
5+
}

dist/feed-reader.browser.js

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/feed-reader.browser.js.map

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

eval.cjs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// eval.cjs
2+
3+
// to quickly test with a single url or file
4+
5+
const { read } = require('./dist/cjs/feed-reader.js')
6+
7+
const extractFromUrl = async (url) => {
8+
try {
9+
const feed = await read(url)
10+
console.log(feed)
11+
} catch (err) {
12+
console.trace(err)
13+
}
14+
}
15+
16+
const init = (argv) => {
17+
if (argv.length === 3) {
18+
const input = argv[2]
19+
return extractFromUrl(input)
20+
}
21+
return 'Nothing to do!'
22+
}
23+
24+
init(process.argv)

package.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"version": "6.0.0",
2+
"version": "6.0.1",
33
"name": "feed-reader",
44
"description": "To read and normalize RSS/ATOM/JSON feed data",
55
"homepage": "https://www.npmjs.com/package/feed-reader",
@@ -17,8 +17,10 @@
1717
"scripts": {
1818
"lint": "standard .",
1919
"pretest": "npm run lint",
20-
"test": "NODE_ENV=test NODE_OPTIONS=--experimental-vm-modules jest --verbose --coverage=true",
20+
"test": "NODE_ENV=test NODE_OPTIONS=--experimental-vm-modules jest --coverage=true",
21+
"build": "node build",
2122
"eval": "node eval",
23+
"eval:cjs": "node eval.cjs",
2224
"reset": "node reset"
2325
},
2426
"dependencies": {
@@ -28,6 +30,7 @@
2830
"html-entities": "^2.3.3"
2931
},
3032
"devDependencies": {
33+
"esbuild": "^0.15.2",
3134
"jest": "^28.1.3",
3235
"nock": "^13.2.9"
3336
},

0 commit comments

Comments
 (0)