UNPKG

jiuye-cli

Version:

A simple CLI for scaffolding Jiuye projects.

42 lines (36 loc) 1.34 kB
const match = require('minimatch') // 字符匹配工具 const evaluate = require('./eval') // 返回某作用下表达式的值 /** * files 模板内的所有文件 * filters meta.js或者meta.json的filters字段 * data metalsmith.metadata() * done 交于下一个metalsmith插件处理 */ module.exports = (files, filters, data, done) => { // console.log('files:', files) // console.log('filters:', filters) // console.log('data:', data) if (!filters) { // meta.js或者meta.json没有filters字段直接跳过交于下一个metalsmith插件处理 return done() } // 获取所有文件的名字 const fileNames = Object.keys(files) console.log('fileNames-fileNames-fileNames:', fileNames) console.log('filters-filters-filters:', filters) // 遍历meta.js或者meta.json没有filters下的所有字段 Object.keys(filters).forEach(glob => { // 遍历所有文件名 fileNames.forEach(file => { // 如果有文件名跟filters下的某一个字段匹配上 if (match(file, glob, { dot: true })) { const condition = filters[glob] // 如果metalsmith.metadata()下condition表达式不成立,删除该文件 if (!evaluate(condition, data)) { delete files[file] } } }) }) done() }