|
@@ -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
|