zoro-cli
Version:
https://github.com/vuejs/vue-cli
23 lines (21 loc) • 643 B
JavaScript
const fs = require('fs')
const path = require('path')
const { importFrom } = require('zoro-cli-util/import')
exports.forEachPlugin = (category, cb) => {
const pluginDir = path.join(__dirname, `plugin/${category}`)
if (fs.existsSync(pluginDir)) {
const idToPlugin = name => ({
id: name.replace(/^\.\//, 'built-in:'),
dir: pluginDir,
apply: importFrom(path.join(pluginDir, name), './index'),
})
fs.readdirSync(pluginDir)
.filter(name => name.charAt(0) !== '.')
.map(idToPlugin)
.forEach(({ apply }) => {
if (typeof apply === 'function') {
cb(apply)
}
})
}
}