restructure directory structure
This commit is contained in:
commit
11cb996dc8
|
@ -0,0 +1 @@
|
||||||
|
defaults
|
|
@ -0,0 +1 @@
|
||||||
|
node_modules/
|
|
@ -0,0 +1,20 @@
|
||||||
|
module.exports = {
|
||||||
|
parser: "babel-eslint",
|
||||||
|
"env": {
|
||||||
|
"browser": true,
|
||||||
|
"commonjs": true,
|
||||||
|
"es6": true
|
||||||
|
},
|
||||||
|
"extends": [
|
||||||
|
"plugin:prettier/recommended"
|
||||||
|
],
|
||||||
|
"globals": {
|
||||||
|
"Atomics": "readonly",
|
||||||
|
"SharedArrayBuffer": "readonly"
|
||||||
|
},
|
||||||
|
"parserOptions": {
|
||||||
|
"ecmaVersion": 2018
|
||||||
|
},
|
||||||
|
"rules": {
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,9 @@
|
||||||
|
## Build Directory
|
||||||
|
|
||||||
|
Default build directory is `./build`. To change edit `gulpfile.js`.
|
||||||
|
|
||||||
|
## Implemented so Far
|
||||||
|
|
||||||
|
* JS transpilation, minification with Babel, Terser.
|
||||||
|
* SASS compilation, css minification.
|
||||||
|
* BrowserSync.
|
|
@ -0,0 +1,3 @@
|
||||||
|
const presets = [["@babel/env"]];
|
||||||
|
|
||||||
|
module.exports = { presets };
|
|
@ -0,0 +1,71 @@
|
||||||
|
const { src, dest, series, parallel, watch } = require("gulp");
|
||||||
|
|
||||||
|
const path = require("path");
|
||||||
|
const del = require("del");
|
||||||
|
const babel = require("gulp-babel");
|
||||||
|
const terser = require("gulp-terser");
|
||||||
|
const sass = require("gulp-sass");
|
||||||
|
const postcss = require("gulp-postcss");
|
||||||
|
const postcssPresetEnv = require("postcss-preset-env");
|
||||||
|
const cssnano = require("cssnano");
|
||||||
|
const browserSync = require("browser-sync");
|
||||||
|
|
||||||
|
sass.compiler = require("node-sass");
|
||||||
|
|
||||||
|
const server = browserSync.create();
|
||||||
|
|
||||||
|
const babelConfig = require("./babel.config.js");
|
||||||
|
const postcssPlugins = [postcssPresetEnv(), cssnano()];
|
||||||
|
|
||||||
|
const srcDir = "./src/";
|
||||||
|
const buildDir = "./build/";
|
||||||
|
const jsSrc = path.join(srcDir, "js/**/*.js");
|
||||||
|
const jsDest = path.join(buildDir, "js/");
|
||||||
|
const scssSrc = path.join(srcDir, "scss/**/*.scss");
|
||||||
|
const cssDest = path.join(buildDir, "css/");
|
||||||
|
|
||||||
|
function jsClean() {
|
||||||
|
return del(jsDest, { force: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
function cssClean() {
|
||||||
|
return del(cssDest, { force: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
function jsTranspile() {
|
||||||
|
return src(jsSrc, { sourcemaps: true })
|
||||||
|
.pipe(babel(babelConfig))
|
||||||
|
.pipe(terser())
|
||||||
|
.pipe(dest(jsDest, { sourcemaps: true }));
|
||||||
|
}
|
||||||
|
|
||||||
|
function scssCompile() {
|
||||||
|
return src(scssSrc, { sourcemaps: true })
|
||||||
|
.pipe(sass().on("error", sass.logError))
|
||||||
|
.pipe(postcss(postcssPlugins))
|
||||||
|
.pipe(dest(cssDest, { sourcemaps: true }));
|
||||||
|
}
|
||||||
|
|
||||||
|
function serve(done) {
|
||||||
|
server.init({
|
||||||
|
open: false,
|
||||||
|
server: {
|
||||||
|
baseDir: buildDir,
|
||||||
|
}
|
||||||
|
// or instead of server
|
||||||
|
// proxy: "example.home"
|
||||||
|
});
|
||||||
|
done();
|
||||||
|
}
|
||||||
|
|
||||||
|
function reload(done) {
|
||||||
|
server.reload();
|
||||||
|
done();
|
||||||
|
}
|
||||||
|
|
||||||
|
const jsWatch = () =>
|
||||||
|
watch(jsSrc, { ignoreInitial: false }, series(jsClean, jsTranspile));
|
||||||
|
const cssWatch = () =>
|
||||||
|
watch(scssSrc, { ignoreInitial: false }, series(cssClean, scssCompile));
|
||||||
|
|
||||||
|
exports.default = parallel(jsWatch, cssWatch, serve);
|
|
@ -0,0 +1,34 @@
|
||||||
|
{
|
||||||
|
"name": "gulp-web",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"main": "index.js",
|
||||||
|
"author": "ray <git@gabbaell.co.uk>",
|
||||||
|
"license": "MIT",
|
||||||
|
"private": true,
|
||||||
|
"devDependencies": {
|
||||||
|
"@babel/cli": "^7.6.2",
|
||||||
|
"@babel/core": "^7.6.2",
|
||||||
|
"@babel/preset-env": "^7.6.2",
|
||||||
|
"babel-eslint": "^10.0.3",
|
||||||
|
"babel-preset-env": "^1.7.0",
|
||||||
|
"browser-sync": "^2.26.7",
|
||||||
|
"cssnano": "^4.1.10",
|
||||||
|
"del": "^5.1.0",
|
||||||
|
"eslint": "^6.4.0",
|
||||||
|
"eslint-config-prettier": "^6.3.0",
|
||||||
|
"eslint-plugin-prettier": "^3.1.1",
|
||||||
|
"gulp": "^4.0.2",
|
||||||
|
"gulp-babel": "^8.0.0",
|
||||||
|
"gulp-concat": "^2.6.1",
|
||||||
|
"gulp-postcss": "^8.0.0",
|
||||||
|
"gulp-sass": "^4.0.2",
|
||||||
|
"gulp-sourcemaps": "^2.6.5",
|
||||||
|
"gulp-terser": "^1.2.0",
|
||||||
|
"node-sass": "^4.12.0",
|
||||||
|
"postcss-preset-env": "^6.7.0",
|
||||||
|
"prettier": "1.18.2"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@babel/polyfill": "^7.6.0"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
(function() {
|
||||||
|
window.addEventListener("DOMContentLoaded", event => {
|
||||||
|
// TODO
|
||||||
|
});
|
||||||
|
})();
|
|
@ -0,0 +1,3 @@
|
||||||
|
html {
|
||||||
|
font-size: 100%;
|
||||||
|
}
|
|
@ -0,0 +1,2 @@
|
||||||
|
@import "variables";
|
||||||
|
@import "base";
|
Loading…
Reference in New Issue