Эх сурвалжийг харах

feat: add template render

zhangyuhan 3 жил өмнө
parent
commit
d32e655966
1 өөрчлөгдсөн 33 нэмэгдсэн , 0 устгасан
  1. 33 0
      src/utils/render.ts

+ 33 - 0
src/utils/render.ts

@@ -0,0 +1,33 @@
+import { PACKAGE } from '../template'
+
+const ejs = require('ejs')
+const replace = require('replace-in-file')
+
+function filterFiles (dir: string) {
+  const support = ['js', 'ts', 'json', 'md']
+  return support.map(s => `${dir}/**/*.${s}`)
+
+}
+
+function render (dir: string, args = {}) {
+  let stop = false
+  return new Promise((resolve, reject) => {
+    replace({
+      files: filterFiles(dir),
+      allowEmptyPaths: true,
+      processor: (content: any) => {
+        if (stop) return content
+        let result = content
+        try {
+          result = ejs.render(content, args)
+        } catch (e) {
+          reject(e)
+          stop = true
+        }
+        return result
+      }
+    }).then(resolve).catch(reject)
+  })
+}
+
+export default render