diff --git a/.travis.yml b/.travis.yml index 7b6912fe..11cfb455 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,7 @@ language: node_js node_js: - - "11" + - "lts/erbium" cache: yarn install: diff --git a/gulpfile.js b/gulpfile.js index a900f227..5a22367a 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -8,79 +8,86 @@ const sass = require('gulp-sass'); const postcss = require('gulp-postcss'); const cssnano = require('cssnano'); const concat = require('gulp-concat'); +const rename = require('gulp-rename'); const imageResize = require('gulp-image-resize'); +const parallel = require('concurrent-transform'); +const os = require('os'); const browserSync = require('browser-sync').create(); // Gulp Run Tasks gulp.task('scripts:compatdb', callback => { - exec(`cd ./scripts/shared-hugo-scripts/compatdb/ && yarn install && node app.js`, (err, stdout, stderr) => { - callback(err); - }); + exec('cd ./scripts/shared-hugo-scripts/compatdb/ && yarn install && node app.js', (err, stdout, stderr) => { + callback(err); + }); }); gulp.task('scripts:twitter', callback => { - exec(`cd ./scripts/shared-hugo-scripts/twitter/ && yarn install && node app.js`, (err, stdout, stderr) => { - callback(err); - }); + exec('cd ./scripts/shared-hugo-scripts/twitter/ && yarn install && node app.js', (err, stdout, stderr) => { + callback(err); + }); }); gulp.task('scripts:wiki', callback => { - exec(`cd ./scripts/shared-hugo-scripts/wiki/ && yarn install && node app.js`, (err, stdout, stderr) => { - callback(err); - }); + exec('cd ./scripts/shared-hugo-scripts/wiki/ && yarn install && node app.js', (err, stdout, stderr) => { + callback(err); + }); }); gulp.task('assets:images', () => { - const baseImages = gulp.src(`build/images/*`, {base: './'}) - .pipe(gulp.dest('./')); - const jumbotronImages = gulp.src(`build/images/jumbotron/*`, {base: './'}) - .pipe(imageResize({width: 426, height: 240, crop: true})) - .pipe(gulp.dest('./')); - const bannerImages = gulp.src(`build/images/banners/*`, {base: './'}) - .pipe(imageResize({width: 824, height: 306, crop: false})) - .pipe(gulp.dest('./')); - const boxartImages = gulp.src(`build/images/game/boxart/*`, {base: './'}) - .pipe(imageResize({width: 328, height: 300, crop: true})) - .pipe(gulp.dest('./')); - const iconImages = gulp.src(`build/images/game/icons/*`, {base: './'}) - .pipe(imageResize({width: 48, height: 48, crop: true})) - .pipe(gulp.dest('./')); - const screenshotImages = gulp.src(`build/images/screenshots/*`) - .pipe(imageResize({width: 640, height: 360, crop: false})) - .pipe(gulp.dest(`build/images/screenshots/thumbs`)); - - return merge(baseImages, jumbotronImages, bannerImages, boxartImages, iconImages, screenshotImages); + const baseImages = gulp.src('build/images/*', {base: './'}) + .pipe(gulp.dest('./')); + const jumbotronImages = gulp.src('build/images/jumbotron/*', {base: './'}) + .pipe(imageResize({width: 426, height: 240, crop: true})) + .pipe(gulp.dest('./')); + const bannerImages = gulp.src('build/images/banners/*', {base: './'}) + .pipe(imageResize({width: 824, height: 306, crop: false})) + .pipe(gulp.dest('./')); + const boxartImages = gulp.src('build/images/game/boxart/*', {base: './'}) + .pipe(imageResize({width: 328, height: 300, crop: true})) + .pipe(gulp.dest('./')); + const iconImages = gulp.src('build/images/game/icons/*', {base: './'}) + .pipe(imageResize({width: 48, height: 48, crop: true})) + .pipe(gulp.dest('./')); + const screenshotImages = gulp.src('build/images/screenshots/*') + .pipe(imageResize({width: 640, height: 360, crop: false})) + .pipe(gulp.dest('build/images/screenshots/thumbs')); + const postImages = gulp.src('build/entry/*/*.png') + .pipe(parallel(imageResize({quality: 0.8, format: 'jpg', percentage: 80})), os.cpus().length) + .pipe(rename({extname: '.png.jpg'})) + .pipe(gulp.dest('build/entry/')); + + return merge(baseImages, jumbotronImages, bannerImages, boxartImages, iconImages, screenshotImages, postImages); }); gulp.task('assets:js', () => { - return gulp.src(['src/js/**/*.js']) - .pipe(concat('script.js')) - .pipe(gulp.dest('build/js')); + return gulp.src(['src/js/**/*.js']) + .pipe(concat('script.js')) + .pipe(gulp.dest('build/js')); }); gulp.task('assets:scss', () => { - const postCssOptions = [cssnano]; - return gulp.src('src/scss/style.scss') - .pipe(sass().on('error', sass.logError)) - .pipe(postcss(postCssOptions)) - .pipe(gulp.dest('build/css')) - .pipe(browserSync.stream()); + const postCssOptions = [cssnano]; + return gulp.src('src/scss/style.scss') + .pipe(sass().on('error', sass.logError)) + .pipe(postcss(postCssOptions)) + .pipe(gulp.dest('build/css')) + .pipe(browserSync.stream()); }); gulp.task('hugo', callback => { - exec('hugo -s ./site/ -d ../build/ -v', (err, stdout, stderr) => { - console.log(stdout); - callback(err); - }); + exec('hugo -s ./site/ -d ../build/ -v', (err, stdout, stderr) => { + console.log(stdout); + callback(err); + }); }); gulp.task('final:serve', (done) => { - browserSync.init({ - open: false, - server: { - baseDir: 'build' - } - }); + browserSync.init({ + open: false, + server: { + baseDir: 'build' + } + }); gulp.watch('src/js/**/*', gulp.series('assets:js')); gulp.watch('src/scss/**/*', gulp.series('assets:scss')); @@ -88,34 +95,34 @@ gulp.task('final:serve', (done) => { gulp.watch('site/**/*.md', gulp.series('hugo')); gulp.watch('build/**/*.html').on('change', function(x) { - browserSync.reload(x); + browserSync.reload(x); }); - done() + done(); }); gulp.task('final:publish', (done) => { - fs.writeFileSync(`build/CNAME`, `${cname}`); - fs.writeFileSync(`build/robots.txt`, `Sitemap: https://${cname}/sitemap.xml\n\nUser-agent: *`); - done() + fs.writeFileSync('build/CNAME', `${cname}`); + fs.writeFileSync('build/robots.txt', `Sitemap: https://${cname}/sitemap.xml\n\nUser-agent: *`); + done(); }); const cname = 'yuzu-emu.org'; let finalCommand = null; if (util.env.production) { - process.env.HUGO_ENV = 'PRD'; - process.env.HUGO_BASEURL = `https://${cname}` - finalCommand = 'final:publish'; + process.env.HUGO_ENV = 'PRD'; + process.env.HUGO_BASEURL = `https://${cname}`; + finalCommand = 'final:publish'; } else { - process.env.HUGO_ENV = 'DEV'; - process.env.HUGO_BASEURL = 'http://localhost:3000' - finalCommand = 'final:serve'; + process.env.HUGO_ENV = 'DEV'; + process.env.HUGO_BASEURL = 'http://localhost:3000'; + finalCommand = 'final:serve'; } -util.log(`process.env.HUGO_ENV = '${process.env.HUGO_ENV}'`) -util.log(`process.env.HUGO_BASEURL = '${process.env.HUGO_BASEURL}'`) +util.log(`process.env.HUGO_ENV = '${process.env.HUGO_ENV}'`); +util.log(`process.env.HUGO_BASEURL = '${process.env.HUGO_BASEURL}'`); -gulp.task('default', gulp.series(gulp.parallel('assets:js', 'assets:scss'), 'hugo', 'assets:images', finalCommand)) -gulp.task('all', gulp.series(gulp.parallel('scripts:compatdb', 'scripts:twitter', 'scripts:wiki'), gulp.parallel('assets:js', 'assets:scss'), 'hugo', 'assets:images', finalCommand)) -gulp.task('content', gulp.series('hugo', finalCommand)) +gulp.task('default', gulp.series(gulp.parallel('assets:js', 'assets:scss'), 'hugo', 'assets:images', finalCommand)); +gulp.task('all', gulp.series(gulp.parallel('scripts:compatdb', 'scripts:wiki'), gulp.parallel('assets:js', 'assets:scss'), 'hugo', 'assets:images', finalCommand)); +gulp.task('content', gulp.series('hugo', finalCommand)); diff --git a/package.json b/package.json index 5d794b68..3e3fb2db 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,13 @@ "homepage": "https://github.com/yuzu-emu/yuzu-emu.github.io#readme", "dependencies": { "bulma": "0.9.0", + "concurrent-transform": "^1.0.0", "cssnano": "^4.1.10", "gulp": "^4.0.2", "gulp-concat": "^2.6.1", "gulp-image-resize": "^0.13.1", "gulp-postcss": "^8.0.0", + "gulp-rename": "^2.0.0", "gulp-sass": "^4.1.0", "gulp-util": "^3.0.8", "merge-stream": "^2.0.0" diff --git a/yarn.lock b/yarn.lock index 0ebe4257..d3a91ad7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1461,6 +1461,11 @@ concat-with-sourcemaps@^1.0.0: dependencies: source-map "^0.6.1" +concurrent-transform@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/concurrent-transform/-/concurrent-transform-1.0.0.tgz#7a0fdea2f8096239487fdb0addb5edaa7f596f6c" + integrity sha1-eg/eovgJYjlIf9sK3bXtqn9Zb2w= + configstore@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" @@ -3312,6 +3317,11 @@ gulp-postcss@^8.0.0: postcss-load-config "^2.0.0" vinyl-sourcemaps-apply "^0.2.1" +gulp-rename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-2.0.0.tgz#9bbc3962b0c0f52fc67cd5eaff6c223ec5b9cf6c" + integrity sha512-97Vba4KBzbYmR5VBs9mWmK+HwIf5mj+/zioxfZhOKeXtx5ZjBk57KFlePf5nxq9QsTtFl0ejnHE3zTC9MHXqyQ== + gulp-sass@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/gulp-sass/-/gulp-sass-4.1.0.tgz#486d7443c32d42bf31a6b1573ebbdaa361de7427"