diff --git a/Gruntfile.js b/Gruntfile.js deleted file mode 100644 index 80d02e5..0000000 --- a/Gruntfile.js +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Grunt Task Wrangler - * - * @copyright Copyright © 2016 Locomotive - * @license Licensed under the MIT license. - */ - -'use strict'; - -module.exports = function (grunt) -{ - var path = require('path'); - - require('load-grunt-config')(grunt, { - configPath: path.join(process.cwd(), 'build/grunt/config'), - data: { - paths: { - grunt: 'build/grunt', - npm: 'node_modules', - js: { - src: 'assets/scripts', - dist: 'www/assets/scripts' - }, - css: { - src: 'assets/styles', - dist: 'www/assets/styles' - }, - img: { - src: 'assets/images', - dist: 'www/assets/images' - } - } - } - }); -}; diff --git a/assets/scripts/App.js b/assets/scripts/app.js similarity index 100% rename from assets/scripts/App.js rename to assets/scripts/app.js diff --git a/build/concat.js b/build/concat.js new file mode 100644 index 0000000..ad3f859 --- /dev/null +++ b/build/concat.js @@ -0,0 +1,14 @@ +import gulp from 'gulp'; +import gulpConcat from 'gulp-concat'; +import paths from '../mconfig.json'; + +function concat() { + return gulp + .src([ + `${paths.scripts.vendors.src}*.js` + ]) + .pipe(gulpConcat(`${paths.scripts.vendors.main}.js`)) + .pipe(gulp.dest(paths.scripts.dest)); +} + +export default concat; diff --git a/build/grunt/config/aliases.json b/build/grunt/config/aliases.json deleted file mode 100644 index 8265290..0000000 --- a/build/grunt/config/aliases.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "default": [ - "build" - ], - - "sync": [ - "browserSync", - "browserify:dev", - "watch", - "notify:watch" - ], - - "build": [ - "sass", - "postcss", - "cssmin", - "browserify:prod", - "concat:prod", - "uglify", - "svg_sprite", - "notify:build" - ], - - "w": [ - "browserify:dev", - "watch", - "notify:watch" - ], - - "c": [ - "csscomb" - ], - - "j": [ - "eslint" - ], - - "p": [ - "phplint" - ] -} diff --git a/build/grunt/config/browserSync.js b/build/grunt/config/browserSync.js deleted file mode 100644 index 8f45b30..0000000 --- a/build/grunt/config/browserSync.js +++ /dev/null @@ -1,20 +0,0 @@ -module.exports = { - options: { - open : false, - proxy : 'locomotive-boilerplate.test', - port : 3000, - watchTask : true, - notify : false - }, - dev: { - bsFiles: { - src : [ - '<%= paths.css.dist %>/**/*.css', - '<%= paths.js.dist %>/**/*.js', - '<%= paths.img.dist %>/**/*.svg', - '**/*.php', - '**/*.html', - ] - } - } -}; diff --git a/build/grunt/config/browserify.js b/build/grunt/config/browserify.js deleted file mode 100644 index e4dbf08..0000000 --- a/build/grunt/config/browserify.js +++ /dev/null @@ -1,39 +0,0 @@ -module.exports = { - options: { - browserifyOptions: { - debug: false - }, - exclude: "", - transform: [ - ['babelify', { - presets: ['env'], - plugins: [ - ['transform-class-properties'] - ] - }] - ] - }, - dev: { - options: { - browserifyOptions: { - debug: true - }, - watch: true - }, - src: [ - '<%= paths.js.src %>/**/*.js', - '!<%= paths.js.src %>/vendors/**/*.js' - ], - dest: '<%= paths.js.dist %>/app.js' - }, - prod: { - options: { - banner: '/*! <%= package.title %> - <%= grunt.template.today("yyyy-mm-dd") %> */\n' - }, - src: [ - '<%= paths.js.src %>/**/*.js', - '!<%= paths.js.src %>/vendors/**/*.js' - ], - dest: '<%= paths.js.dist %>/app.js' - } -}; diff --git a/build/grunt/config/concat.js b/build/grunt/config/concat.js deleted file mode 100644 index 9c507ce..0000000 --- a/build/grunt/config/concat.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - prod: { - options: { - banner: '/*! Dependencies for <%= package.title %> - <%= grunt.template.today("yyyy-mm-dd") %> */\n' - }, - src : [ - '<%= paths.js.src %>/vendors/**/*.js', - '<%= paths.npm %>/pjax/pjax.js', - '<%= paths.npm %>/svg4everybody/dist/svg4everybody.js' - ], - dest : '<%= paths.js.dist %>/vendors.js' - } -}; - diff --git a/build/grunt/config/csscomb.js b/build/grunt/config/csscomb.js deleted file mode 100644 index f66d7cc..0000000 --- a/build/grunt/config/csscomb.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = { - options: { - config: '.csscomb.json' - }, - dev: { - files: [ - { - expand : true, - cwd : '<%= paths.css.src %>', - src : [ '**/*.scss', '!base/_fonts.scss' ], - dest : '<%= paths.css.src %>' - } - ] - } -}; diff --git a/build/grunt/config/cssmin.js b/build/grunt/config/cssmin.js deleted file mode 100644 index 1261349..0000000 --- a/build/grunt/config/cssmin.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - options: {}, - prod: { - files: [ - { - expand : true, - cwd : '<%= paths.css.dist %>', - src : [ '**/*.css', '!**/*.min.css' ], - dest : '<%= paths.css.dist %>' - } - ] - } -}; diff --git a/build/grunt/config/eslint.js b/build/grunt/config/eslint.js deleted file mode 100644 index 906ada7..0000000 --- a/build/grunt/config/eslint.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - options: { - quiet : false, - format : require('eslint-tap'), - configFile : '.eslintrc' - }, - dev: [ - '<%= paths.js.src %>/**/*.js', - '!<%= paths.js.src %>/vendors/**/*.js' - ] -}; diff --git a/build/grunt/config/notify.js b/build/grunt/config/notify.js deleted file mode 100644 index bc09e81..0000000 --- a/build/grunt/config/notify.js +++ /dev/null @@ -1,36 +0,0 @@ -module.exports = { - notify_hooks: { - options: { - enabled : true, - success : true, - duration : 3, - title : '<%= package.name %>', - max_jshint_notifications : 5 - } - }, - watch: { - options: { - message: 'Keeping an eye out, Chief!' - } - }, - build: { - options: { - message: 'Everything is ready to go!' - } - }, - sass: { - options: { - message: 'CSS is compiled' - } - }, - javascript: { - options: { - message: 'JavaScript is compiled' - } - }, - svg: { - options: { - message: 'SVG is concatenated' - } - } -}; diff --git a/build/grunt/config/phplint.js b/build/grunt/config/phplint.js deleted file mode 100644 index 2465a82..0000000 --- a/build/grunt/config/phplint.js +++ /dev/null @@ -1,12 +0,0 @@ -module.exports = { - options: { - swapPath : '/tmp', - phpArgs : { - // add -f for fatal errors - '-lf': null - } - }, - dev: [ - '**/*.php' - ] -}; diff --git a/build/grunt/config/postcss.js b/build/grunt/config/postcss.js deleted file mode 100644 index d305e29..0000000 --- a/build/grunt/config/postcss.js +++ /dev/null @@ -1,27 +0,0 @@ -module.exports = function (grunt, options) -{ - return { - options: { - map: false, - processors: [ - require('autoprefixer')({ - browsers: [ 'last 2 versions', '> 1%', 'ie >= 9' ] - }), - require('postcss-banner')({ - banner: grunt.template.process('! <%= package.title %> - <%= grunt.template.today("yyyy-mm-dd") %> ', { data: options }) - }) - ] - }, - prod: { - files: [ - { - expand : true, - flatten : true, - cwd : '<%= paths.css.dist %>', - src : [ '**/*.css', '!**/*.min.css' ], - dest : '<%= paths.css.dist %>' - } - ] - } - } -}; diff --git a/build/grunt/config/sass.js b/build/grunt/config/sass.js deleted file mode 100644 index 67b2137..0000000 --- a/build/grunt/config/sass.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = { - options: { - sourceMap : false, - outputStyle : 'expanded' - }, - prod: { - files: [ - { - expand : true, - cwd : '<%= paths.css.src %>', - src : [ '**/*.scss' ], - dest : '<%= paths.css.dist %>', - ext : '.css' - } - ] - } -}; diff --git a/build/grunt/config/svg_sprite.js b/build/grunt/config/svg_sprite.js deleted file mode 100644 index 4f9d315..0000000 --- a/build/grunt/config/svg_sprite.js +++ /dev/null @@ -1,29 +0,0 @@ -module.exports = { - options : { - svg: { - xmlDeclaration : false, - namespaceIDs : true, - doctypeDeclaration : false, - cleanupNumericValues : true, - removeTitle : true, - removeDesc : true - } - }, - prod: { - expand : true, - cwd : '<%= paths.img.src %>', - src : [ '**/*.svg', '!sprite.svg' ], - dest : '<%= paths.img.dist %>', - options : { - mode: { - symbol: { - dest : '.', - sprite : 'sprite.svg', - example : { - dest: '../../../build/sprite.symbol.html' - } - } - } - } - } -} diff --git a/build/grunt/config/uglify.js b/build/grunt/config/uglify.js deleted file mode 100644 index 856a3c3..0000000 --- a/build/grunt/config/uglify.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - options: {}, - prod: { - files: [ - { - expand : true, - cwd : '<%= paths.js.dist %>', - src : [ '**/*.js', '!**/*.min.js' ], - dest : '<%= paths.js.dist %>' - } - ] - } -}; diff --git a/build/grunt/config/watch.js b/build/grunt/config/watch.js deleted file mode 100644 index 70b1e02..0000000 --- a/build/grunt/config/watch.js +++ /dev/null @@ -1,27 +0,0 @@ -module.exports = { - options: { - spawn: false, - livereload: false - }, - javascript_vendors: { - files: [ '<%= paths.js.src %>/vendors/**/*.js', '<%= paths.grunt %>/config/concat.js' ], - tasks: [ 'concat', 'notify:javascript' ] - }, - sass: { - files: [ '<%= paths.css.src %>/**/*.scss' ], - tasks: [ 'sass', 'postcss', 'notify:sass' ] - }, - svg: { - files: [ '<%= paths.img.src %>/**/*.svg' ], - tasks: [ 'svg_sprite', 'notify:svg' ] - }, - tasks: { - options: { - reload: true - }, - files: [ - 'Gruntfile.js', - '<%= paths.grunt %>/**/*' - ] - } -}; diff --git a/build/serve.js b/build/serve.js new file mode 100644 index 0000000..e33e695 --- /dev/null +++ b/build/serve.js @@ -0,0 +1,14 @@ +import browserSync from 'browser-sync'; +import paths from '../mconfig.json'; + +export const server = browserSync.create(); + +function serve(done) { + server.init({ + notify: false, + proxy: paths.url + }); + done(); +} + +export default serve; diff --git a/build/watch.js b/build/watch.js new file mode 100644 index 0000000..c69a7ac --- /dev/null +++ b/build/watch.js @@ -0,0 +1,22 @@ +import gulp from 'gulp'; +import paths from '../mconfig.json'; +import styles from './styles.js'; +import scripts from './scripts.js'; +import svgs from './svgs.js'; +import concat from './concat.js'; +import { server } from './serve.js'; + +function watch() { + gulp.watch(paths.styles.src, styles); + gulp.watch(paths.scripts.src, gulp.series(scripts, reload)); + gulp.watch(paths.scripts.vendors.src, concat); + gulp.watch(paths.views.src, reload); + gulp.watch(paths.svgs.src, gulp.series(svgs, reload)); +} + +function reload(done) { + server.reload(); + done(); +} + +export default watch; diff --git a/gulpfile.babel.js b/gulpfile.babel.js new file mode 100644 index 0000000..5d3ea6c --- /dev/null +++ b/gulpfile.babel.js @@ -0,0 +1,16 @@ +import gulp from 'gulp'; +import styles from './build/styles.js'; +import scripts from './build/scripts.js'; +import concat from './build/concat.js'; +import svgs from './build/svgs.js'; +import serve from './build/serve.js'; +import watch from './build/watch.js'; +import { buildStyles, buildScripts } from './build/build.js'; + +const compile = gulp.series(styles, scripts, svgs, concat); +const main = gulp.series(compile, serve, watch); +const build = gulp.series(compile, buildStyles, buildScripts); + +gulp.task('default', main); +gulp.task('compile', compile); +gulp.task('build', build); diff --git a/mconfig.json b/mconfig.json new file mode 100755 index 0000000..95edd28 --- /dev/null +++ b/mconfig.json @@ -0,0 +1,33 @@ +{ + "url": "boilerplate.test", + "src": "./assets/", + "dest": "./www/", + "build": "./build/", + "styles": { + "src": "./assets/styles/", + "dest": "./www/assets/styles/", + "main": "main" + }, + "scripts": { + "src": "./assets/scripts/", + "dest": "./www/assets/scripts/", + "main": "app", + "vendors": { + "src": "./assets/scripts/vendors/", + "main": "vendors" + } + }, + "svgs": { + "src": "./assets/images/sprite/", + "dest": "./www/assets/images/" + }, + "views": { + "src": "./views/boilerplate/template/" + }, + "modules": { + "build": "gulp", + "style": "sass", + "script": "js", + "view": false + } +} diff --git a/package.json b/package.json index 80c062a..16bcdb4 100644 --- a/package.json +++ b/package.json @@ -1,4 +1,3 @@ - { "private": true, "name": "@locomotivemtl/boilerplate", @@ -6,33 +5,10 @@ "version": "1.0.0", "author": "Locomotive ", "dependencies": { - "pjax": "0.0.0", - "svg4everybody": "0.0.0" + "pjax": "*", + "svg4everybody": "*" }, "devDependencies": { - "autoprefixer": "0.0.0", - "babel-core": "0.0.0", - "babel-preset-env": "0.0.0", - "babel-plugin-transform-class-properties": "0.0.0", - "babel-plugin-transform-export-extensions": "0.0.0", - "babelify": "0.0.0", - "eslint-tap": "0.0.0", - "glob": "0.0.0", - "grunt": "0.0.0", - "grunt-browser-sync": "0.0.0", - "grunt-browserify": "0.0.0", - "grunt-contrib-concat": "0.0.0", - "grunt-contrib-cssmin": "0.0.0", - "grunt-contrib-uglify": "0.0.0", - "grunt-contrib-watch": "0.0.0", - "grunt-csscomb": "0.0.0", - "grunt-eslint": "0.0.0", - "grunt-notify": "0.0.0", - "grunt-phplint": "0.0.0", - "grunt-postcss": "0.0.0", - "grunt-sass": "0.0.0", - "grunt-svg-sprite": "0.0.0", - "load-grunt-config": "0.0.0", - "postcss-banner": "0.0.0" + "gulp-concat": "*" } }