You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
flyapps/mailhtml/build.js

61 lines
2.0 KiB

const spawn = require("child_process").spawn;
const path = require('path')
const fs = require('fs')
const cmdPath = path.resolve('./node_modules/.bin/mjml.cmd')
function build_html(file_full_path, buildPath) {
let output_path = file_full_path.replace('mjml.html','html')
output_path = path.join(buildPath,path.basename(output_path))
return new Promise(function(resolve, reject) {
let result = spawn(cmdPath, [file_full_path,'-o',output_path]);
result.on('close', function(code) {
if(code === 0){
console.log('build success. output:'+output_path)
}else {
console.log('child process exited with code :' + code);
}
});
result.stdout.on('data', function(data) {
console.log('stdout: ' + data);
});
result.stderr.on('data', function(data) {
console.log('stderr: ' + data);
reject(new Error(data.toString()));
});
resolve();
});
}
let filePath = path.resolve('./src')
let buildPath = path.resolve('./build')
fs.exists(buildPath,function (exists) {
if(!exists){
fs.mkdir(buildPath,res=>{
})
}else {
fs.rmdir(buildPath,{recursive:true},res=>{
fs.mkdir(buildPath,res=>{
})
})
}
})
fs.readdir(filePath,function (err,files) {
if (err) {
console.warn(err, "读取文件夹错误!")
} else {
files.forEach(function(filename) {
//获取当前文件的绝对路径
let file_full_path = path.join(filePath, filename);
fs.stat(file_full_path, function(error, stats) {
if (error) {
console.warn('获取文件stats失败');
} else {
if(stats.isFile() && file_full_path.endsWith('.mjml.html')){
build_html(file_full_path, buildPath).then()
}
}
})
})
}
})