complete rewrite #8
4 changed files with 78 additions and 3617 deletions
|
@ -9,7 +9,6 @@ module.exports = function(eleventyConfig) {
|
||||||
"img": "img",
|
"img": "img",
|
||||||
"font": "font",
|
"font": "font",
|
||||||
"node_modules/@fortawesome/fontawesome-free/webfonts/": "font",
|
"node_modules/@fortawesome/fontawesome-free/webfonts/": "font",
|
||||||
"node_modules/fork-awesome/fonts/": "font",
|
|
||||||
"node_modules/flag-icon-css/flags/4x3/(de|us)*": "flags"
|
"node_modules/flag-icon-css/flags/4x3/(de|us)*": "flags"
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
254
gulpfile.js
254
gulpfile.js
|
@ -1,254 +0,0 @@
|
||||||
/**
|
|
||||||
* Settings
|
|
||||||
* Turn on/off build features
|
|
||||||
*/
|
|
||||||
var settings = {
|
|
||||||
clean: true,
|
|
||||||
scripts: true,
|
|
||||||
styles: true,
|
|
||||||
copy: true,
|
|
||||||
reload: true
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Paths to project folders
|
|
||||||
*/
|
|
||||||
var paths = {
|
|
||||||
input: 'src/',
|
|
||||||
output: 'dist/',
|
|
||||||
scripts: {
|
|
||||||
input: 'src/js/*.js',
|
|
||||||
output: 'dist/js/'
|
|
||||||
},
|
|
||||||
styles: {
|
|
||||||
input: 'src/scss/*.scss',
|
|
||||||
output: 'dist/css/'
|
|
||||||
},
|
|
||||||
copy: {
|
|
||||||
input: [
|
|
||||||
'src/*.html',
|
|
||||||
// 'src/.htaccess',
|
|
||||||
'src/{img,font}/**/*',
|
|
||||||
'node_modules/@fortawesome/fontawesome-free/webfonts/**/*'
|
|
||||||
],
|
|
||||||
output: 'dist/'
|
|
||||||
},
|
|
||||||
reload: './dist/'
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Template for banner to add to file headers
|
|
||||||
*/
|
|
||||||
|
|
||||||
var banner = {
|
|
||||||
main:
|
|
||||||
'/*!' +
|
|
||||||
' <%= package.name %> v<%= package.version %>' +
|
|
||||||
' | (c) ' + new Date().getFullYear() + ' <%= package.author.name %>' +
|
|
||||||
' | <%= package.license %> License' +
|
|
||||||
' | <%= package.repository.url %>' +
|
|
||||||
' */\n'
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gulp Packages
|
|
||||||
*/
|
|
||||||
// General
|
|
||||||
var {src, dest, watch, series, parallel} = require('gulp');
|
|
||||||
var del = require('del');
|
|
||||||
var flatmap = require('gulp-flatmap');
|
|
||||||
var lazypipe = require('lazypipe');
|
|
||||||
var rename = require('gulp-rename');
|
|
||||||
var header = require('gulp-header');
|
|
||||||
var package = require('./package.json');
|
|
||||||
|
|
||||||
// Scripts
|
|
||||||
var concat = require('gulp-concat');
|
|
||||||
var uglify = require('gulp-terser');
|
|
||||||
var optimizejs = require('gulp-optimize-js');
|
|
||||||
|
|
||||||
// Styles
|
|
||||||
var sass = require('gulp-sass');
|
|
||||||
var postcss = require('gulp-postcss');
|
|
||||||
var prefix = require('autoprefixer');
|
|
||||||
var minify = require('cssnano');
|
|
||||||
var tildeImporter = require('node-sass-tilde-importer');
|
|
||||||
|
|
||||||
// BrowserSync
|
|
||||||
var browserSync = require('browser-sync');
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gulp Tasks
|
|
||||||
*/
|
|
||||||
// Remove pre-existing content from output folders
|
|
||||||
var cleanDist = function (done) {
|
|
||||||
|
|
||||||
// Make sure this feature is activated before running
|
|
||||||
if (!settings.clean) return done();
|
|
||||||
|
|
||||||
// Clean the dist folder
|
|
||||||
del.sync([
|
|
||||||
paths.output
|
|
||||||
]);
|
|
||||||
|
|
||||||
// Signal completion
|
|
||||||
return done();
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
// Repeated JavaScript tasks
|
|
||||||
var jsTasks = lazypipe()
|
|
||||||
.pipe(header, banner.main, {package: package})
|
|
||||||
.pipe(optimizejs)
|
|
||||||
.pipe(dest, paths.scripts.output)
|
|
||||||
.pipe(rename, {suffix: '.min'})
|
|
||||||
.pipe(uglify)
|
|
||||||
.pipe(optimizejs)
|
|
||||||
.pipe(header, banner.main, {package: package})
|
|
||||||
.pipe(dest, paths.scripts.output);
|
|
||||||
|
|
||||||
// minify, and concatenate scripts
|
|
||||||
var buildScripts = function (done) {
|
|
||||||
// Make sure this feature is activated before running
|
|
||||||
if (!settings.scripts) return done();
|
|
||||||
|
|
||||||
// Run tasks on script files
|
|
||||||
return src(paths.scripts.input)
|
|
||||||
.pipe(flatmap(function(stream, file) {
|
|
||||||
|
|
||||||
// If the file is a directory
|
|
||||||
if (file.isDirectory()) {
|
|
||||||
|
|
||||||
// Setup a suffix variable
|
|
||||||
var suffix = '';
|
|
||||||
|
|
||||||
// If separate polyfill files enabled
|
|
||||||
if (settings.polyfills) {
|
|
||||||
|
|
||||||
// Update the suffix
|
|
||||||
suffix = '.polyfills';
|
|
||||||
|
|
||||||
// Grab files that aren't polyfills, concatenate them, and process them
|
|
||||||
src([file.path + '/*.js', '!' + file.path + '/*' + paths.scripts.polyfills])
|
|
||||||
.pipe(concat(file.relative + '.js'))
|
|
||||||
.pipe(jsTasks());
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Grab all files and concatenate them
|
|
||||||
// If separate polyfills enabled, this will have .polyfills in the filename
|
|
||||||
src(file.path + '/*.js')
|
|
||||||
.pipe(concat(file.relative + suffix + '.js'))
|
|
||||||
.pipe(jsTasks());
|
|
||||||
|
|
||||||
return stream;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Otherwise, process the file
|
|
||||||
return stream.pipe(jsTasks());
|
|
||||||
|
|
||||||
}));
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
// Process, and minify Sass files
|
|
||||||
var buildStyles = function (done) {
|
|
||||||
// Make sure this feature is activated before running
|
|
||||||
if (!settings.styles) return done();
|
|
||||||
|
|
||||||
// Run tasks on all Sass files
|
|
||||||
return src(paths.styles.input)
|
|
||||||
.pipe(sass({
|
|
||||||
importer: tildeImporter,
|
|
||||||
outputStyle: 'expanded',
|
|
||||||
sourceComments: true
|
|
||||||
}))
|
|
||||||
.pipe(postcss([
|
|
||||||
prefix({
|
|
||||||
cascade: true,
|
|
||||||
remove: true
|
|
||||||
})
|
|
||||||
]))
|
|
||||||
.pipe(header(banner.main, {package: package}))
|
|
||||||
.pipe(dest(paths.styles.output))
|
|
||||||
.pipe(rename({suffix: '.min'}))
|
|
||||||
.pipe(postcss([
|
|
||||||
minify({
|
|
||||||
discardComments: {
|
|
||||||
removeAll: true
|
|
||||||
}
|
|
||||||
})
|
|
||||||
]))
|
|
||||||
.pipe(dest(paths.styles.output));
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
// Copy static files into output folder
|
|
||||||
var copyFiles = function (done) {
|
|
||||||
|
|
||||||
// Make sure this feature is activated before running
|
|
||||||
if (!settings.copy) return done();
|
|
||||||
|
|
||||||
// Copy static files
|
|
||||||
return src(paths.copy.input)
|
|
||||||
.pipe(dest(paths.copy.output));
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
// Watch for changes to the src directory
|
|
||||||
var startServer = function (done) {
|
|
||||||
// Make sure this feature is activated before running
|
|
||||||
if (!settings.reload) return done();
|
|
||||||
|
|
||||||
// Initialize BrowserSync
|
|
||||||
browserSync.init({
|
|
||||||
server: {
|
|
||||||
baseDir: paths.reload
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Signal completion
|
|
||||||
done();
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
// Reload the browser when files change
|
|
||||||
var reloadBrowser = function (done) {
|
|
||||||
if (!settings.reload) return done();
|
|
||||||
browserSync.reload();
|
|
||||||
done();
|
|
||||||
};
|
|
||||||
|
|
||||||
// Watch for changes
|
|
||||||
var watchSource = function (done) {
|
|
||||||
watch(paths.input, series(exports.default, reloadBrowser));
|
|
||||||
done();
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Export Tasks
|
|
||||||
*/
|
|
||||||
// Default task
|
|
||||||
// gulp
|
|
||||||
exports.default = series(
|
|
||||||
cleanDist,
|
|
||||||
parallel(
|
|
||||||
buildScripts,
|
|
||||||
buildStyles,
|
|
||||||
copyFiles
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
// Watch and reload
|
|
||||||
// gulp watch
|
|
||||||
exports.watch = series(
|
|
||||||
exports.default,
|
|
||||||
startServer,
|
|
||||||
watchSource
|
|
||||||
);
|
|
3400
package-lock.json
generated
3400
package-lock.json
generated
File diff suppressed because it is too large
Load diff
28
package.json
28
package.json
|
@ -3,14 +3,11 @@
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"description": "website for sp-codes.de",
|
"description": "website for sp-codes.de",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start-old": "gulp watch",
|
|
||||||
"build-old": "gulp",
|
|
||||||
"copy-resources": "#cpx \"node_modules/@fortawesome/fontawesome-free/webfonts/*\" \"dist/font\"",
|
|
||||||
"compile-sass": "node-sass --output-style compressed --importer=node_modules/node-sass-tilde-importer scss/main.scss dist/css/main.css",
|
"compile-sass": "node-sass --output-style compressed --importer=node_modules/node-sass-tilde-importer scss/main.scss dist/css/main.css",
|
||||||
"watch:eleventy": "eleventy --serve",
|
"watch:eleventy": "eleventy --serve",
|
||||||
"watch:sass": "npm run compile-sass -- --watch",
|
"watch:sass": "npm run compile-sass -- --watch",
|
||||||
"start": "npm-run-all copy-resources compile-sass --parallel watch:*",
|
"start": "npm-run-all compile-sass --parallel watch:*",
|
||||||
"build": "npm run copy-resources && npm run compile-sass && eleventy"
|
"build": "npm run compile-sass && eleventy"
|
||||||
},
|
},
|
||||||
"author": "samuel-p",
|
"author": "samuel-p",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
@ -20,32 +17,15 @@
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@11ty/eleventy": "^0.10.0",
|
"@11ty/eleventy": "^0.10.0",
|
||||||
"@11ty/eleventy-navigation": "^0.1.5",
|
"@11ty/eleventy-navigation": "^0.1.5",
|
||||||
"autoprefixer": "9.6.1",
|
|
||||||
"browser-sync": "2.26.7",
|
"browser-sync": "2.26.7",
|
||||||
"clean-css": "latest",
|
|
||||||
"cpx": "^1.5.0",
|
"cpx": "^1.5.0",
|
||||||
"cssnano": "4.1.10",
|
|
||||||
"del": "3.0.0",
|
|
||||||
"gulp": "4.0.2",
|
|
||||||
"gulp-concat": "2.6.1",
|
|
||||||
"gulp-flatmap": "1.0.2",
|
|
||||||
"gulp-header": "2.0.5",
|
|
||||||
"gulp-optimize-js": "1.1.0",
|
|
||||||
"gulp-postcss": "8.0.0",
|
|
||||||
"gulp-rename": "1.4.0",
|
|
||||||
"gulp-sass": "4.0.2",
|
|
||||||
"gulp-terser": "1.1.7",
|
|
||||||
"lazypipe": "1.0.1",
|
|
||||||
"node-sass": "^4.13.1",
|
"node-sass": "^4.13.1",
|
||||||
"node-sass-tilde-importer": "^1.0.2",
|
"node-sass-tilde-importer": "^1.0.2",
|
||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "^4.1.5"
|
||||||
"nunjucks": "latest",
|
|
||||||
"sass": "^1.26.2"
|
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@fortawesome/fontawesome-free": "^5.11.2",
|
"@fortawesome/fontawesome-free": "^5.11.2",
|
||||||
"bootstrap": "^4.3.1",
|
"bootstrap": "^4.3.1",
|
||||||
"flag-icon-css": "^3.4.6",
|
"flag-icon-css": "^3.4.6"
|
||||||
"jquery": "^3.4.1"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue