new dev stack
This commit is contained in:
148
Gruntfile.js
Normal file
148
Gruntfile.js
Normal file
@ -0,0 +1,148 @@
|
||||
module.exports = function(grunt) {
|
||||
'use strict';
|
||||
require('load-grunt-tasks')(grunt);
|
||||
|
||||
grunt.initConfig({
|
||||
|
||||
config: {
|
||||
source: 'site',
|
||||
dest: 'dist',
|
||||
temp: '.tmp'
|
||||
},
|
||||
|
||||
eslint: {
|
||||
// http://eslint.org/docs/rules/
|
||||
target: '<%= config.source %>/assets/js/**/*'
|
||||
},
|
||||
|
||||
sasslint: {
|
||||
// https://github.com/sasstools/sass-lint/tree/master/docs/rules
|
||||
target: '<%= config.source %>/assets/scss/**/*'
|
||||
},
|
||||
|
||||
clean: {
|
||||
build: {
|
||||
files: [{
|
||||
dot: true,
|
||||
src: [
|
||||
'<%= config.dest %>/*',
|
||||
'!<%= config.dest %>/video/*'
|
||||
]
|
||||
}]
|
||||
}
|
||||
},
|
||||
|
||||
sass: {
|
||||
options: {
|
||||
sourceMap: true,
|
||||
includePaths: [
|
||||
'<%= config.source %>/assets/scss/'
|
||||
]
|
||||
},
|
||||
build: {
|
||||
files: {
|
||||
'<%= config.dest %>/assets/css/main.css': '<%= config.source %>/assets/scss/main.scss'
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
postcss: {
|
||||
options: {
|
||||
map: true,
|
||||
processors: [
|
||||
require('autoprefixer')({browsers: ['last 2 versions']})
|
||||
]
|
||||
},
|
||||
dist: {
|
||||
src: '<%= config.dest %>/assets/css/main.css'
|
||||
}
|
||||
},
|
||||
|
||||
copy: {
|
||||
assets: {
|
||||
files: [{
|
||||
expand: true,
|
||||
cwd: '<%= config.source %>/assets/',
|
||||
src: ['{fonts,img,icon,data,vendor}/**/*'],
|
||||
dest: '<%= config.dest %>/assets/'
|
||||
}]
|
||||
},
|
||||
misc: {
|
||||
files: [{
|
||||
expand: true,
|
||||
cwd: '<%= config.source %>',
|
||||
src: [
|
||||
'favicon.ico'
|
||||
],
|
||||
dest: '<%= config.dest %>'
|
||||
}]
|
||||
}
|
||||
},
|
||||
|
||||
assemble: {
|
||||
options: {
|
||||
assets: '<%= config.dest %>/assets',
|
||||
data: 'template_data/*.json',
|
||||
flatten: true,
|
||||
layout: 'default.hbs',
|
||||
layoutdir: '<%= config.source %>/layouts',
|
||||
partials: '<%= config.source %>/partials/**/*.hbs'
|
||||
},
|
||||
|
||||
build: {
|
||||
files: [{'<%= config.dest %>/': ['<%= config.source %>/pages/**/*.hbs']}]
|
||||
}
|
||||
},
|
||||
|
||||
watch: {
|
||||
images: {
|
||||
files: '<%= config.source %>/img/**/*',
|
||||
tasks: ['copy:assets']
|
||||
},
|
||||
scss: {
|
||||
files: '<%= config.source %>/assets/**/*.scss',
|
||||
tasks: ['concurrent:scssWatch']
|
||||
},
|
||||
js: {
|
||||
files: '<%= config.source %>/assets/**/*.{json,js}',
|
||||
tasks: ['concurrent:jsWatch']
|
||||
},
|
||||
assemble: {
|
||||
files: '<%= config.source %>/**/*.hbs',
|
||||
tasks: ['assemble:build']
|
||||
}
|
||||
},
|
||||
|
||||
concurrent: {
|
||||
scssWatch: ['sasslint', ['sass:build', 'postcss']],
|
||||
jsWatch: ['eslint', 'babel']
|
||||
},
|
||||
|
||||
browserSync: {
|
||||
serve: {
|
||||
bsFiles: { src: [ '<%= config.dest %>/**.*' ] },
|
||||
options: {
|
||||
watchTask: true,
|
||||
server: '<%= config.dest %>',
|
||||
browser: ["google chrome"],
|
||||
// tunnel: true,
|
||||
open: 'external',
|
||||
notify: false,
|
||||
ghostMode: {
|
||||
clicks: true,
|
||||
forms: true,
|
||||
scroll: true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Tasks
|
||||
|
||||
grunt.registerTask('lint', ['sasslint', 'eslint']);
|
||||
grunt.registerTask('build', ['clean:build', 'copy', 'sass', 'postcss', 'assemble']);
|
||||
grunt.registerTask('default', ['lint', 'build']);
|
||||
|
||||
grunt.registerTask('serve', ['lint', 'build', 'browserSync', 'watch']);
|
||||
};
|
Reference in New Issue
Block a user