Skip to content

Instantly share code, notes, and snippets.

@the-cc-dev
Last active December 17, 2019 01:29
Show Gist options
  • Save the-cc-dev/85c78fa05926df8d93f89da7c70a7363 to your computer and use it in GitHub Desktop.
Save the-cc-dev/85c78fa05926df8d93f89da7c70a7363 to your computer and use it in GitHub Desktop.
OLD -- front-end dev files
# EditorConfig helps developers define and maintain consistent
# coding styles between different editors and IDEs
# editorconfig.org
root = true
[*]
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = space
indent_size = 2
[*.hbs]
insert_final_newline = false
[*.{diff,md}]
trim_trailing_whitespace = false

Basic Files for My Front-End Dev Flow

Table of Contents

  • README.md
  • bower.json
  • composer.json
  • package.json
  • semantic.json
  • gulpfile.js //- Gruntfile.js //- webpack.config.js
  • .editorconfig
  • tsconfig.json //- .flowconfig //- .gitattributes //- .gitignore //- .npmconfig //- .babelrc //- .jshintrc //- .stylelintrc //- .eslint.js //- .eslintignore

//- Dockerfile //- docker-compose.yml

{
"name": "PROJECT_NAME",
"description": "PROJECT_DESCRIPTION",
"main": "",
"authors": [
"the-cc-dev <[email protected]>"
],
"license": "MIT",
"ignore": [
"**/.*",
"node_modules",
"bower_components",
"test",
"tests"
],
"dependencies": {}
}
{
"name" : "PROJECT_NAME",
"description": "PROJECT_DESCRIPTION",
"type" : "PROJECT_TYPE",
"license" : "GPL-2.0+",
"authors" : [{
"name" : "the-cc-dev",
"email" : "[email protected]"
}],
"require": {
"php": "^5.2 || ^7",
"composer/installers": "~1.0"
},
"require-dev": {
"phpunit/phpunit": "^6",
"php": "^5.6 || ^7",
"dealerdirect/phpcodesniffer-composer-installer": "^0.4.4",
"phpcompatibility/phpcompatibility-wp": "^2",
"squizlabs/php_codesniffer": "^3.3.2",
"wp-coding-standards/wpcs": "^1.1"
},
"scripts": {
"install-codestandards": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin::run",
"phpcs": "phpcs"
},
"extra": {
"installer-paths": {
"../../plugins/{$name}/": [
"type:wordpress-plugin"
],
"../{$name}/": [
"type:wordpress-theme"
]
}
},
"minimum-stability": "dev"
}
'use strict';
const
/* * * * * * * * *
* REQUIRES
* * * * * * * * */
// Require npm modules
babelify = require('babelify'),
browserify = require('browserify'),
browserSync = require('browser-sync'),
buffer = require('vinyl-buffer'),
console = require('better-console'),
del = require('del'),
mergeStream = require('merge-stream'),
runSequence = require('run-sequence'),
source = require('vinyl-source-stream'),
tsify = require('tsify'),
watchify = require('watchify'),
{ src, dest, watch, series, parallel } = require('gulp'),
autoprefixer = require('gulp-autoprefixer'),
changed = require('gulp-changed'),
cleanCSS = require('gulp-clean-css'),
concatCSS = require('gulp-concat-css'),
debug = require('gulp-debug'),
dedupe = require('gulp-dedupe'),
extReplace = require('gulp-ext-replace'),
filter = require('gulp-filter'),
flatten = require('gulp-flatten'),
imagemin = require('gulp-imagemin'),
less = require('gulp-less'),
log = require('gulplog'),
plumber = require('gulp-plumber'),
rename = require('gulp-rename'),
replace = require('gulp-replace'),
scss = require('gulp-scss'),
/******************************************************************************/
/* * * * * * * * *
* TASK VARS
* * * * * * * * */
// restorable filetype filters
filters = {
less: filter('**/*.less', {restore: true}),
scss: filter('**/*.scss', {restore: true}),
ts: filter('**/*.ts', {restore: true})
},
// browser-sync proxy url
bsProxy = 'http://stellaproductions.zodiac/wp',
// src & dest paths
srcPath = './src/',
distPath = './dist/',
paths = {
src: {
fonts: srcPath+'fonts/**/*',
images: srcPath+'img/**/*',
scripts: srcPath+'scripts/',
styles: srcPath+'styles/',
themes: srcPath+'semantic/src/themes/**/*'
},
dist: {
clean: distPath+'**/*',
css: distPath+'css/',
fonts: distPath+'fonts/',
images: distPath+'images/',
js: distPath+'js/',
themes: distPath+'themes/'
}
},
paths.src.css = paths.src.styles+'css/',
paths.src.less = paths.src.styles+'less/main.less',
paths.src.scss = paths.src.styles+'scss/main.scss',
paths.src.ts = paths.src.scripts+'ts/main.ts',
paths.watch = {
build: ['./gulpfile.js', './package.json'],
fonts: [paths.src.fonts],
images: [paths.src.images],
styles: [srcPath+'styles/**/*',srcPath+'semantic/**']
}
// JS Browserify Bundler
bundler = browserify({
cache: {},
packageCache: {},
entries: [paths.src.ts],
debug: true,
extensions: ['.ts'],
fulPaths: true
}).plugin(tsify, {target:'es6'}).transform(babelify)
;
/******************************************************************************/
/* * * * * * * * *
* TASK FUNCTIONS
* * * * * * * * */
function clean(cb) {
console.log('cleaning destination folder');
return del(paths.dist.clean);
cb();
}
function fonts(cb) {
console.log('building fonts');
return src(paths.src.fonts)
.pipe(plumber())
.pipe(debug())
.pipe(flatten())
.pipe(dedupe())
.pipe(dest(paths.dist.fonts))
.pipe(browserSync.stream())
;
cb();
}
function images(cb) {
console.log('building images');
return src(paths.src.images)
.pipe(plumber())
.pipe(debug())
.pipe(flatten())
.pipe(dedupe())
.pipe(imagemin())
.pipe(dest(paths.dist.images))
.pipe(browserSync.stream())
;
cb();
}
function themes(cb) {
console.log('moving semantic ui themes');
return src(paths.src.themes)
.pipe(plumber())
.pipe(debug())
.pipe(dest(paths.dist.themes))
.pipe(browserSync.stream())
;
cb();
}
const assets = parallel(fonts, images, themes);
function scripts(cb) {
return bundler
.bundle()
.pipe(source('scripts.js'))
.pipe(buffer())
.pipe(dest(paths.dist.js))
.pipe(browserSync.stream())
;
cb();
}
function lessStyles(cb) {
console.log('building styles');
return src(paths.src.less)
.pipe(plumber())
.pipe(debug())
.pipe(less())
.pipe(replace('../../themes/default/', '../themes/default/'))
.pipe(rename('less.css'))
.pipe(dest(paths.src.css))
;
cb();
}
function scssStyles(cb) {
return src(path.src.scss)
.pipe(plumber())
.pipe(debug())
.pipe(scss())
.pipe(rename('scss.css'))
.pipe(dest(paths.src.css))
;
cb();
}
function cssStyles(cb) {
return src(paths.src.css+'**/*.css')
.pipe(plumber())
.pipe(debug())
.pipe(concat('styles.css'))
.pipe(autoprefixer())
.pipe(dest(paths.dist.css))
.pipe(cleanCSS())
.pipe(extReplace('.min.css'))
.pipe(dest(paths.dist.css))
.pipe(browserSync.stream())
}
const styles = series(
parallel(lessStyles,scssStyles),
cssStyles
);
const build = parallel(assets, scripts, styles);
const cleanBuild = series(clean, build);
function watchJS() {
let watcher = watchify(bundler);
return watcher
.on('error', log.error)
.on('update', () => {
watcher.bundle()
.pipe(source('scripts.js'))
.pipe(buffer())
.pipe(dest(paths.dist.js))
.pipe(browserSync.stream());
})
.bundle()
.pipe(source('scripts.js'))
.pipe(dest(paths.dist.js))
;
}
function watchSrc() {
console.log('watching source files for changes')
browserSync.init({
files: ['*'],
proxy: bsProxy,
snippetOptions: {
whitelist: ['/wp-admin/admin-ajax.php'],
blacklist: ['/wp-admin/**']
}
});
watch(paths.watch.fonts , fonts);
watch(paths.watch.images, images);
watch(paths.watch.styles, styles);
watch(paths.watch.build , build);
}
const wacthAll = parallel(watchJS,watchSrc);
const defTask = series(clean, build, watchAll);
exports.clean = clean;
exports.fonts = fonts;
exports.images = images;
exports.themes = themes;
exports.assets = assets;
exports.scripts = scripts;
exports.styles = styles;
exports.build = build;
exports.cbuild = cleanBuild;
exports.watch = watchAll;
exports.default = defTask;
{
"name": "PROJECT_NAME",
"description": "PROJECT_DESCRIPTION",
"version": "1.0.0",
"author": "the-cc-dev <[email protected]",
"license": "MIT",
"scripts": {
"gulp": "gulp",
"install": "bower install && composer install",
"build": "gulp cbuild",
"watch": "gulp watch"
},
"babel": {
"presets": [
"@babel/flow",
"@babel/env"
],
"plugins": []
},
"dependencies": {
"@types/jquery": "^3.3.29",
"@types/semantic-ui": "^2.2.7",
"fomantic-ui": "^2.7.2",
"jquery": "^3.3.1"
},
"devDependencies": {
"@babel/core": "^7.3.4",
"@babel/preset-env": "^7.1.0",
"@babel/preset-flow": "^7.0.0",
"@babel/register": "^7.0.0",
"babelify": "^10.0.0",
"better-console": "^1.0.1",
"browser-sync": "^2.25.0",
"browserify": "^16.2.3",
"del": "^3.0.0",
"extend": "^3.0.2",
"flow-bin": "^0.83.0",
"flow-typed": "^2.5.1",
"gulp": "^4.0.0",
"gulp-autoprefixer": "^6.0.0",
"gulp-babel": "^8.0.0",
"gulp-changed": "^3.2.0",
"gulp-chmod": "^2.0.0",
"gulp-clean-css": "^3.10.0",
"gulp-clone": "^2.0.1",
"gulp-concat": "^2.6.1",
"gulp-concat-css": "^3.1.0",
"gulp-copy": "^4.0.0",
"gulp-debug": "^4.0.0",
"gulp-dedupe": "^0.0.2",
"gulp-ext-replace": "^0.3.0",
"gulp-filter": "^5.1.0",
"gulp-flatten": "^0.4.0",
"gulp-header": "^2.0.5",
"gulp-help": "^1.6.1",
"gulp-if": "^2.0.2",
"gulp-imagemin": "^4.1.0",
"gulp-js-import": "^1.0.6",
"gulp-less": "^4.0.1",
"gulp-notify": "^3.2.0",
"gulp-plumber": "^1.2.0",
"gulp-print": "^5.0.0",
"gulp-rename": "^1.4.0",
"gulp-replace": "^1.0.0",
"gulp-rtlcss": "^1.3.0",
"gulp-scss": "^1.4.0",
"gulp-sourcemaps": "^2.6.4",
"gulp-uglify": "^3.0.1",
"gulp-util": "^3.0.8",
"gulp-watch": "^5.0.1",
"lazypipe": "^1.0.1",
"map-stream": "^0.0.7",
"merge-stream": "^1.0.1",
"replace-ext": "^1.0.0",
"require-dot-file": "^0.4.0",
"run-sequence": "^2.2.1",
"tsify": "^4.0.1",
"typescript": "^3.3.3333",
"vinyl-buffer": "^1.0.1",
"vinyl-source-stream": "^2.0.0",
"watchify": "^3.11.1",
"yamljs": "^0.3.0"
}
}
{
"base": "src/semantic/",
"paths": {
"source": {
"config": "src/theme.config",
"definitions": "src/definitions/",
"site": "src/site/",
"themes": "src/themes/"
},
"output": {
"packaged": "dist/",
"uncompressed": "dist/components/",
"compressed": "dist/components/",
"themes": "dist/themes/"
},
"clean": "dist/"
},
"permission": false,
"autoInstall": false,
"rtl": false,
"version": "2.7.2"
}
{
"include": [
"src/scripts/ts/**/*"
],
"exclude": [
"node_modules",
"assets"
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment