voerka-i18n/packages/tools/extract.command.js
2022-03-14 18:16:09 +08:00

43 lines
1.5 KiB
JavaScript

const { findModuleType } = require("./utils")
const path = require("path")
const fs = require("fs")
const gulp = require("gulp")
const extractor = require("./extract.plugin")
const createLogger = require("logsets")
const logger = createLogger()
module.exports = function(targetPath,options={}){
let { filetypes,exclude} = options
if(!filetypes) filetypes = ["*.js","*.json","*.jsx","*.ts","*.tsx","*.vue","*.html"]
if(!Array.isArray(filetypes)) filetypes = filetypes.split(",")
const folders = filetypes.map(ftype=>{
if(ftype.startsWith(".")) ftype = "*"+ftype
if(!ftype.startsWith("*.")) ftype = "*."+ftype
return path.join(targetPath,"**",ftype)
})
folders.push(`!${path.join(targetPath,"languages","**")}`)
folders.push(`!${path.join(targetPath,"node_modules","**")}`)
folders.push(`!${path.join(targetPath,"**","node_modules","**")}`)
if(!Array.isArray(exclude) && exclude){
exclude = exclude.split(",")
}
if(exclude){
exclude.forEach(folder=>{
folders.push(`!${path.join(targetPath,folder)}`)
})
}
if(!fs.existsSync(targetPath)){
logger.log("目标文件夹<{}>不存在",targetPath)
return
}
if(options.debug){
logger.log("扫描提取范围:")
logger.format(folders)
}
options.outputPath = path.join(targetPath,"languages")
gulp.src(folders)
.pipe(extractor(options))
.pipe(gulp.dest(options.outputPath))
}