This commit is contained in:
VersusTune 2020-04-07 21:44:46 +02:00
commit d1ae2059f7
39 changed files with 1735 additions and 428 deletions

37
build/task/js.js Normal file
View file

@ -0,0 +1,37 @@
const terser = require('gulp-terser'),
concat = require('gulp-concat'),
rename = require('gulp-rename'),
gulp = require('gulp');
const basePath = __dirname + '/../../raw/javascript/';
const visualPath = basePath + 'visuals/';
const visuals = [
visualPath + 'sphere.js',
//visualPath + 'wave.js',
//visualPath + 'water.js',
//visualPath + 'experimental.js',
]
const config = {
src: [
basePath + 'utils.js',
basePath + 'handler.js',
basePath + 'audio.js',
basePath + 'player.js',
basePath + 'gui.js',
basePath + 'visual.js',
...visuals,
basePath + 'app.js'
],
dest: __dirname + '/../../out/js'
};
function build() {
return gulp.src(config.src)
.pipe(concat('scripts.js'))
.pipe(gulp.dest(config.dest))
.pipe(rename('scripts.min.js'))
.pipe(terser())
.pipe(gulp.dest(config.dest));
}
module.exports.build = build;

View file

@ -0,0 +1,26 @@
const gulp = require('gulp'),
fs = require('fs')
const basePath = __dirname + '/../../raw/gui/';
const config = {
src: basePath + '*.json',
dest: __dirname + '/../../out/gui/'
}
function build() {
fs.readdirSync(basePath).forEach(file => {
try {
if (fs.lstatSync(basePath + file).isDirectory())
return
let content = fs.readFileSync(basePath + file).toString()
fs.writeFileSync(config.dest + file, JSON.stringify(JSON.parse(content)))
} catch (e) {
console.error(e)
}
})
return gulp.src(config.src)
}
module.exports.build = build;

17
build/task/scss.js Normal file
View file

@ -0,0 +1,17 @@
const sass = require('gulp-sass'),
clean = require('gulp-clean-css'),
gulp = require('gulp');
const config = {
src: __dirname + '/../../raw/scss/**/*.scss',
dest: __dirname + '/../../out/theme'
};
function buildCSS() {
return gulp.src(config.src)
.pipe(sass().on('error', sass.logError))
.pipe(clean())
.pipe(gulp.dest(config.dest));
}
module.exports.buildCSS = buildCSS;

104
build/task/spriteBuilder.js Normal file
View file

@ -0,0 +1,104 @@
const faSvgSprite = require('fontawesome-svg-sprite-generator'),
SVGSpriter = require('svg-sprite'),
path = require('path'),
fs = require('fs'),
fal = require('@fortawesome/pro-light-svg-icons'),
far = require('@fortawesome/pro-regular-svg-icons'),
fas = require('@fortawesome/pro-solid-svg-icons'),
fsextra = require('node-fs-extra'),
gulp = require('gulp');
let toMergeData = [];
function buildIconSprites() {
let config = {
src: __dirname + '/../../raw/icons',
dest: __dirname + '/../../out/icon-sprite.svg',
spriter: {
shape: {
id: {
generator: function (name) {
return "vt-" + name.replace('.svg', '');
}
}
},
"svg": {
"xmlDeclaration": false,
"doctypeDeclaration": false
},
"mode": {
"symbol": true
}
}
};
let icons = {
fa: [
fal.faPlay,
fal.faPause,
fal.faCaretRight,
fal.faCaretLeft,
fal.faRandom,
fal.faCogs,
fal.faFolderUpload,
fal.faListMusic,
],
vt: []
};
builder.init(config, icons);
builder.generateFontAwesome();
builder.generateFromIcons();
return gulp.src(config.src);
}
let builder = {
init: function (config, icons) {
this.config = config;
this.icons = icons;
},
generateFontAwesome: function () {
let sprite = faSvgSprite.generate(this.icons.fa, {license: '', xmlDeclaration: false});
toMergeData.push(sprite.svg);
},
generateFromIcons: function () {
builder.merge();
},
merge: function () {
if (toMergeData.length === 0) {
return;
}
let data = '<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg">';
for (let item of toMergeData) {
data += item.replace('</svg>', '').replace(/(<svg)([^<]*|[^>]*)/g, '');
}
data += '</svg>';
let dirname = path.dirname(builder.config.dest);
if (!fs.existsSync(dirname)) {
fsextra.mkdirpSync(dirname);
}
fs.writeFileSync(builder.config.dest, data);
},
readFiles: function (dir, spriter, icons) {
let files = fs.readdirSync(dir);
for (let file of files) {
let split = file.split('.');
let suffix = split[split.length - 1];
if (suffix === 'svg' && icons.indexOf('vt-' + split[0]) !== -1) {
let filePath = path.resolve(dir, file);
spriter.add(
filePath,
file,
fs.readFileSync(filePath, {encoding: 'utf-8'})
);
}
}
}
};
module.exports.buildIconSprites = buildIconSprites;