携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第21天,点击查看活动详情
初始化
初始化通过命令行输入cos相关key值,或者读取本地config文件存入配置项
const fs = require("fs");
const path = require('path');
const inquirer = require('inquirer');
const initTemplate = require('../bin/templates/config');
const RELEASETYPE = 'release'
const UPLOADTYPE = 'upload'
function getGrompList (type) {
return [
{
name: 'releasePath',
message:'发布文件所在目录',
when: !type || type.indexOf(RELEASETYPE) > -1 || type.indexOf(UPLOADTYPE) > -1
},
{
name: 'releaseFile',
message:'发布文件',
when: !type || type.indexOf(RELEASETYPE) > -1
},
{
name: 'srcPath',
message:'待发布文件所在目录',
when: !type || type.indexOf(RELEASETYPE) > -1
},
{
name: 'isNotRoot',
message:'发布文件压缩后是否不是跟目录',
when: !type || type.indexOf(RELEASETYPE) > -1
},
{
name: 'releasePkgName',
message:'发布文件压缩后目录名',
when: !type || type.indexOf(RELEASETYPE) > -1
},
{
name: 'SecretId',
message:'',
when: !type || type.indexOf(UPLOADTYPE) > -1
},
{
name: 'SecretKey',
message:'',
when: !type || type.indexOf(UPLOADTYPE) > -1
},
{
name: 'Bucket',
message:'',
when: !type || type.indexOf(UPLOADTYPE) > -1
},
{
name: 'Region',
message:'',
when: !type || type.indexOf(UPLOADTYPE) > -1
},
{
name: 'Key',
message:'',
when: !type || type.indexOf(UPLOADTYPE) > -1
}
]
}
function init (isDefault = true,type) {
return new Promise(async (resolve, reject) => {
if(isDefault){
const configPath = path.join(path.resolve(process.cwd(),'./'),'faceid.config.js');
fs.writeFileSync(configPath, fs.readFileSync(path.resolve(__dirname, '../bin/templates/faceid.config.js')));
resolve()
}else{
const res = await inquirer.prompt(getGrompList(type))
console.log('init',res)
fs.writeFile(path.resolve(process.cwd(), 'faceid.config.js'), initTemplate(res), function (err) {
if (err) {
reject('创建失败:', err)
} else {
resolve(`初始化成功`);
}
})
}
});
}
module.exports = {
init
}
默认config配置文件:
module.exports = function (params) {
const { releasePath, releaseFile, srcPath, isNotRoot, releasePkgName, SecretId,
SecretKey, Bucket, Region, Key } = params;
return `
module.exports = {
uploadConfig:{
SecretId: ${SecretId || `''`}, // cos的SecretId
SecretKey: ${SecretKey || `''`}, // cos的SecretKey
Bucket: ${Bucket || `''`}, // cos的上传桶
Region: ${Region || `''`}, // cos的Region设置
Key: ${Key || `''`} // cos文件上传路径key值
}
};
`;
};
upload上传
上传前先读配置是否配置,如果没有执行init初始化
#!/usr/bin/env node
// 'use strict';
// const path = require('path');
const { program } = require('commander');
const inquirer = require('inquirer');
// 处理文件
const fs = require("fs");
const { minify } = require('../lib/minify');
const { upload } = require('../lib/upload');
const { templates,prompList } = require('../utils/constant');
const { release } = require('../lib/release');
const { init } = require('../lib/init');
// upload
program
.command('upload')
.description('上传文件')
.action(async () => {
upload();
});
// release
program
.command('release')
.description('打包文件')
.option('-s,--srcfolder <srcfolder>', '待打包文件夹路径')
.option('-o,--outfolder <outfolder>', '打包输出文件夹路径')
.action(async (res) => {
const { srcfolder, outfolder } = res;
release(srcfolder, outfolder);
});
// 处理命令行输入的参数
program.parse(process.argv);