105 lines
3.4 KiB
JavaScript
105 lines
3.4 KiB
JavaScript
const fs = require('fs-extra');
|
||
const path = require('path');
|
||
const Service = require('@vue/cli-service/lib/Service');
|
||
const service = new Service(process.env.VUE_CLI_CONTEXT || process.cwd());
|
||
const _file = require("@babel/cli/lib/babel/file");
|
||
|
||
function buildComponent(folder, file, name) {
|
||
service.run('build', {
|
||
_: ['build', 'src/components/' + folder + '/' + file, 'build'],
|
||
modern: false,
|
||
report: false,
|
||
'report-json': false,
|
||
'inline-vue': false,
|
||
watch: false,
|
||
open: false,
|
||
copy: true,
|
||
https: false,
|
||
verbose: false,
|
||
target: 'lib',
|
||
clean: false,
|
||
name: name,
|
||
dest: 'dist/' + folder
|
||
},
|
||
[
|
||
'build',
|
||
'src/components/' + folder + '/' + file,
|
||
'build',
|
||
'--target',
|
||
'lib',
|
||
'--no-clean',
|
||
'--name',
|
||
name,
|
||
'--dest',
|
||
'dist/' + folder
|
||
]);
|
||
}
|
||
|
||
function transpileJS(folder, file) {
|
||
var options = {
|
||
babelOptions: {
|
||
configFile: './.babelrc-lib'
|
||
},
|
||
cliOptions: {
|
||
filename: undefined,
|
||
filenames: ['src/components/' + folder + '/' + file],
|
||
extensions: undefined,
|
||
keepFileExtension: undefined,
|
||
outFileExtension: undefined,
|
||
watch: undefined,
|
||
skipInitialBuild: undefined,
|
||
outFile: 'dist/' + folder + '/' + file,
|
||
outDir: undefined,
|
||
relative: undefined,
|
||
copyFiles: undefined,
|
||
copyIgnored: undefined,
|
||
includeDotfiles: undefined,
|
||
verbose: undefined,
|
||
quiet: undefined,
|
||
deleteDirOnStart: undefined,
|
||
sourceMapTarget: undefined
|
||
}
|
||
}
|
||
|
||
_file.default(options).catch(err => {
|
||
console.error(err);
|
||
process.exitCode = 1;
|
||
});
|
||
}
|
||
|
||
function blue(str) {
|
||
return '\x1b[1m\x1b[34m' + str + '\x1b[39m\x1b[22m';
|
||
}
|
||
|
||
function green(str) {
|
||
return '\x1b[1m\x1b[32m' + str + '\x1b[39m\x1b[22m';
|
||
}
|
||
|
||
fs.readdirSync(path.resolve(__dirname, './src/components/')).forEach(folder => {
|
||
fs.readdirSync(path.resolve(__dirname, './src/components/' + folder)).forEach(file => {
|
||
if (!(/\.js$/.test(file)) || file === 'index.js') {
|
||
fs.copySync(path.resolve(__dirname, './src/components/' + folder) + '/' + file, 'dist/' + folder + '/' + file);
|
||
}
|
||
});
|
||
});
|
||
|
||
fs.readdirSync(path.resolve(__dirname, './src/components/')).forEach(folder => {
|
||
fs.readdirSync(path.resolve(__dirname, './src/components/' + folder)).forEach(file => {
|
||
if (file !== 'index.js' && file !== 'index.d.ts') {
|
||
let name = file.split(/(.vue)$|(.js)$/)[0].toLowerCase();
|
||
if (/\.js$/.test(file)) {
|
||
console.log('Transpiling ' + blue(file));
|
||
buildComponent(folder, file, name);
|
||
transpileJS(folder, file);
|
||
}
|
||
else if (/\.vue$/.test(file)) {
|
||
console.log('Building ' + green(name));
|
||
buildComponent(folder, file, name);
|
||
}
|
||
}
|
||
});
|
||
});
|
||
|
||
fs.copySync(path.resolve(__dirname, './package-build.json'), 'dist/package.json');
|
||
fs.copySync(path.resolve(__dirname, './README.md'), 'dist/README.md');
|
||
fs.copySync(path.resolve(__dirname, './LICENSE.md'), 'dist/LICENSE.md'); |