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.
105 lines
4.0 KiB
105 lines
4.0 KiB
/**
|
|
* 用于生成前端模版项目
|
|
* 在构建 platform-core 库时, 会将生成的模版工程文件一起发布, 这样前端项目可直接使用
|
|
* 另外当模版发生变化时, 也可以自动在每个前端项目中同步
|
|
*/
|
|
const fs = require('fs');
|
|
const json5 =require('json5');
|
|
const {mkdir, rm, cp, replaceAll } =require('./.bin/util.js');
|
|
|
|
const sourceDir ='./';
|
|
const targetDir ='./template-project/';
|
|
|
|
function parseJson5(src){
|
|
return json5.parse(fs.readFileSync(src).toString());
|
|
}
|
|
|
|
function generatePackageJsonFile(){
|
|
const packageJson =parseJson5('./package.json');
|
|
|
|
delete packageJson['//files'];
|
|
delete packageJson['files'];
|
|
|
|
delete packageJson['//main'];
|
|
delete packageJson['main'];
|
|
|
|
delete packageJson['//types'];
|
|
delete packageJson['types'];
|
|
|
|
delete packageJson['//bin'];
|
|
delete packageJson['bin'];
|
|
|
|
delete packageJson.scripts['lib'];
|
|
delete packageJson.scripts['check'];
|
|
delete packageJson.scripts['template'];
|
|
|
|
packageJson.dependencies['platform-core'] =packageJson.version;
|
|
|
|
const names =[];
|
|
for(const name in packageJson.dependencies){
|
|
names.push(name);
|
|
}
|
|
names.sort((o1,o2)=>{
|
|
if(o1>o2){
|
|
return 1;
|
|
}else if(o1==o2){
|
|
return 0;
|
|
}else{
|
|
return -1;
|
|
}
|
|
});
|
|
const dependencies ={};
|
|
for(const name of names){
|
|
dependencies[name] =packageJson.dependencies[name];
|
|
}
|
|
packageJson.dependencies =dependencies;
|
|
|
|
fs.writeFileSync(targetDir + 'package.json', JSON.stringify(packageJson, null, ' '));
|
|
}
|
|
|
|
function generateTsconfigJsonFile(){
|
|
const tsconfigJson =parseJson5('./tsconfig.json');
|
|
delete tsconfigJson['include'];
|
|
delete tsconfigJson.compilerOptions['declaration'];
|
|
delete tsconfigJson.compilerOptions['declarationDir'];
|
|
delete tsconfigJson.compilerOptions['declarationMap'];
|
|
|
|
fs.writeFileSync(targetDir + 'tsconfig.json', JSON.stringify(tsconfigJson, null, ' '));
|
|
}
|
|
|
|
|
|
rm('./template-project');
|
|
mkdir('./template-project');
|
|
|
|
cp('./src', targetDir + 'src');
|
|
rm(targetDir + 'src/platform');
|
|
|
|
cp('./public', targetDir + 'public');
|
|
|
|
replaceAll(targetDir + 'src/boostrap.ts', {'@/platform':'platform-core','//<C> ':'','//<C>':''});
|
|
replaceAll(targetDir + 'src/shims-vue.d.ts', {'@/platform':'platform-core'});
|
|
replaceAll(targetDir + 'src/App.vue', {'@/platform':'platform-core'});
|
|
|
|
cp(sourceDir + '.browserslistrc', targetDir + '.browserslistrc');
|
|
cp(sourceDir + '.editorconfig', targetDir + '.editorconfig');
|
|
cp(sourceDir + '.eslintrc.cjs', targetDir + '.eslintrc.cjs');
|
|
cp(sourceDir + '.gitignore', targetDir + '.gitignore');
|
|
cp(sourceDir + '.npmignore', targetDir + '.npmignore');
|
|
cp(sourceDir + '.npmrc', targetDir + '.npmrc');
|
|
cp(sourceDir + '.prettierignore', targetDir + '.prettierignore');
|
|
cp(sourceDir + '.prettierrc.json', targetDir + '.prettierrc.json');
|
|
cp(sourceDir + 'babel.config.cjs', targetDir + 'babel.config.cjs');
|
|
cp(sourceDir + 'frontend-register.json', targetDir + 'frontend-register.json');
|
|
cp(sourceDir + 'nodemon.json', targetDir + 'nodemon.json');
|
|
cp(sourceDir + 'postcss.config.cjs', targetDir + 'postcss.config.cjs');
|
|
cp(sourceDir + 'tailwind.config.cjs', targetDir + 'tailwind.config.cjs');
|
|
cp(sourceDir + 'util-components-generator.cjs', targetDir+ 'util-components-generator.cjs');
|
|
cp(sourceDir + 'util-frontend-register.cjs', targetDir + 'util-frontend-register.cjs');
|
|
cp(sourceDir + 'webpack.config.common.cjs', targetDir + 'webpack.config.common.cjs');
|
|
cp(sourceDir + 'webpack.config.mf.cjs', targetDir + 'webpack.config.mf.cjs');
|
|
cp(sourceDir + 'webpack.env.build.cjs', targetDir + 'webpack.env.build.cjs');
|
|
cp(sourceDir + 'webpack.env.prod.cjs', targetDir + 'webpack.env.prod.cjs');
|
|
cp(sourceDir + 'webpack.env.serve.cjs', targetDir + 'webpack.env.serve.cjs');
|
|
generatePackageJsonFile();
|
|
generateTsconfigJsonFile();
|
|
console.info('tempate project generated!');
|