TypeScriptでPipedreamコンポーネントを書く
2020/08/14 16:19:312020/08/14 17:14:37
yarn init
、必要なライブラリをaddする。 setup.sh
git init # お好み
yarn init # 連打で良い
yarn add -D typescript prettier rollup rollup-plugin-esbuild esbuild glob
yarn add ironpipe # devDepsとの区別は適当。実際にsrcでimportするものをdevから外している
tsconfig.json
はこれをそのままコピってきてtargetのみes2018とすればよい。 .prettierrc
はお好みで。 rollup.config.js
const esbuild = require("rollup-plugin-esbuild")
const glob = require("glob")
export default glob.sync("src/*.ts").map((file) => {
return {
input: file,
output: {
dir: "dist",
format: "cjs",
preferConst: true,
},
plugins: [esbuild()],
external: [/^(?!.*\.).*$/], // relativeなファイルのみ取り込む
}
})
src/rss.ts
を作成し、必要なライブラリを導入する。 rss.sh
yarn add rss-parser
src/rss.ts
import { defineComponent } from "ironpipe"
import rssParser from "rss-parser"
module.exports = defineComponent({
name: "rss",
version: "0.0.1",
props: {
url: "string",
timer: {
type: "$.interface.timer",
default: {
intervalSeconds: 60 * 15,
},
},
},
methods: {},
dedupe: "unique",
async run() {
const parser = new rssParser()
const feed = await parser.parseURL(this.url)
feed.items?.map((item) => {
this.$emit(item, {
id: item.guid!,
summary: item.title,
ts: new Date(item.pubDate).getTime(),
})
})
},
})
yarn rollup -c
をするとdist/rss.js
にComponentとしてはっ付けられるjsが生成されている。 @types/xml2js
が欠如しているのでtsc
は通らないのだが、esbuildは型検査をしないので通る。 $.interface.timer
、$.interface.http
、$.service.db
あたりが明示的に使える。thisから生える。 unique
となる Generated from
TypeScriptでPipedreamコンポーネントを書く