Initial commit
This commit is contained in:
101
Frontend/gulpfile.js
Normal file
101
Frontend/gulpfile.js
Normal file
@@ -0,0 +1,101 @@
|
||||
const gulp = require('gulp');
|
||||
const path = require('path');
|
||||
const fs = require('fs-extra');
|
||||
const CC = require('@meesvdw/coloredconsole');
|
||||
const ts = require('gulp-typescript');
|
||||
const concat = require('gulp-concat');
|
||||
const cleanCSS = require('gulp-clean-css');
|
||||
const uglify = require('gulp-uglify');
|
||||
const rename = require('gulp-rename');
|
||||
const { argv } = require('process');
|
||||
var sass = require('gulp-sass')(require('sass'));
|
||||
var tap = require('gulp-tap');
|
||||
var browserify = require('browserify');
|
||||
var buffer = require('gulp-buffer');
|
||||
|
||||
exports.default = () => {
|
||||
var pageIndex = argv.includes('-page') ? argv.indexOf('-page') : null;
|
||||
var pageName = pageIndex != null && pageIndex + 1 < argv.length ? argv[pageIndex + 1] : null;
|
||||
|
||||
var layoutIndex = argv.includes('-layout') ? argv.indexOf('-layout') : null;
|
||||
var layoutName = layoutIndex != null && layoutIndex + 1 < argv.length ? argv[layoutIndex + 1] : null;
|
||||
|
||||
if (pageName == null && layoutName == null)
|
||||
return console.log(
|
||||
CC.red +
|
||||
CC.bright +
|
||||
`\n\nIncorrect syntax. Please use '-page [pagename]' or '-layout [layoutname]'\n\n` +
|
||||
CC.reset
|
||||
);
|
||||
|
||||
var directoryType = pageName ? 'Page' : 'Layout';
|
||||
var directoryName = pageName ? pageName : layoutName;
|
||||
var directoryQuery = pageName ? pageName : `layouts/${layoutName}`;
|
||||
|
||||
var basePath = path.join(__filename, '..', 'pages', directoryQuery);
|
||||
fs.pathExists(basePath, (err, exists) => {
|
||||
if (exists == false)
|
||||
return console.log(
|
||||
CC.red + CC.bright + `\n\n${directoryType} ${directoryName} does not exist\n\n` + CC.reset
|
||||
);
|
||||
else {
|
||||
buildTypescript(basePath, () =>
|
||||
buildSass(basePath, () => {
|
||||
console.log(CC.green + CC.bright + `Watcher running` + CC.reset);
|
||||
gulp.watch(
|
||||
[
|
||||
`pages/${directoryQuery}/ts/**/*.ts`
|
||||
],
|
||||
(finish) => {
|
||||
console.log(CC.blue + CC.bright + `Typescript change detected` + CC.reset);
|
||||
buildTypescript(basePath, finish);
|
||||
}
|
||||
);
|
||||
|
||||
gulp.watch(
|
||||
[
|
||||
`pages/${directoryQuery}/sass/**/*.scss`
|
||||
],
|
||||
(finish) => {
|
||||
console.log(CC.magenta + CC.bright + `Sass change detected` + CC.reset);
|
||||
buildSass(basePath, finish);
|
||||
}
|
||||
);
|
||||
})
|
||||
);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
function buildTypescript(basePath, cb) {
|
||||
var tsProject = ts.createProject(path.join(basePath, 'tsconfig.json'));
|
||||
gulp
|
||||
.src(path.join(basePath, 'ts', '**', '*.ts'))
|
||||
// .pipe(
|
||||
// tap(function(file) {
|
||||
// file.contents = browserify(file.path, { debug: true }).bundle();
|
||||
// })
|
||||
// )
|
||||
// .pipe(buffer())
|
||||
.pipe(tsProject())
|
||||
.js.pipe(concat(`script.js`))
|
||||
.pipe(rename(`script.js`))
|
||||
.pipe(uglify())
|
||||
.pipe(gulp.dest(basePath))
|
||||
.on('end', () => {
|
||||
cb();
|
||||
});
|
||||
}
|
||||
|
||||
function buildSass(basePath, cb) {
|
||||
gulp
|
||||
.src(path.join(basePath, 'sass', '**', '*.scss'))
|
||||
.pipe(sass().on('error', sass.logError))
|
||||
.pipe(cleanCSS({ compatibility: 'ie8' }))
|
||||
.pipe(concat(`style.css`))
|
||||
.pipe(rename(`style.css`))
|
||||
.pipe(gulp.dest(basePath))
|
||||
.on('end', () => {
|
||||
cb();
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user