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.
62 lines
2.0 KiB
62 lines
2.0 KiB
3 years ago
|
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()
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
|
||
|
})
|
||
|
}
|
||
|
})
|