init
This commit is contained in:
168
Gruntfile.js
Normal file
168
Gruntfile.js
Normal file
@ -0,0 +1,168 @@
|
||||
/* eslint-disable no-undef */
|
||||
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 %>/*'
|
||||
]
|
||||
}]
|
||||
}
|
||||
},
|
||||
|
||||
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: [
|
||||
// browser list is managed in package.json
|
||||
// http://browserl.ist/?q=last+2+versions
|
||||
require('autoprefixer')()
|
||||
]
|
||||
},
|
||||
dist: {
|
||||
src: '<%= config.dest %>/assets/css/main.css'
|
||||
}
|
||||
},
|
||||
|
||||
copy: {
|
||||
assets: {
|
||||
files: [{
|
||||
expand: true,
|
||||
cwd: '<%= config.source %>/assets/',
|
||||
src: ['{js,fonts,img,icon,data,vendor}/**/*'],
|
||||
dest: '<%= config.dest %>/assets/'
|
||||
}]
|
||||
},
|
||||
vendor: {
|
||||
files: [{
|
||||
expand: true,
|
||||
flatten: true,
|
||||
cwd: './node_modules/',
|
||||
src: [
|
||||
'normalize.css/normalize.css'
|
||||
],
|
||||
dest: '<%= config.dest %>/assets/vendor/'
|
||||
}]
|
||||
},
|
||||
misc: {
|
||||
files: [{
|
||||
expand: true,
|
||||
cwd: '<%= config.source %>',
|
||||
src: [
|
||||
'/assets/favicon.ico'
|
||||
],
|
||||
dest: '<%= config.dest %>'
|
||||
}]
|
||||
}
|
||||
},
|
||||
|
||||
assemble: {
|
||||
options: {
|
||||
production: false,
|
||||
assets: '<%= config.dest %>/assets',
|
||||
data: '<%= config.source %>/data/*.yml',
|
||||
flatten: true,
|
||||
layout: 'default.hbs',
|
||||
layoutdir: '<%= config.source %>/layouts',
|
||||
partials: '<%= config.source %>/partials/**/*.hbs'
|
||||
},
|
||||
|
||||
buildDev: {
|
||||
files: [{'<%= config.dest %>/': ['<%= config.source %>/pages/**/*.hbs']}]
|
||||
},
|
||||
|
||||
buildProd: {
|
||||
options: {
|
||||
production: true,
|
||||
},
|
||||
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:buildDev']
|
||||
}
|
||||
},
|
||||
|
||||
concurrent: {
|
||||
scssWatch: ['sasslint', ['sass:build', 'postcss']],
|
||||
jsWatch: ['eslint', 'babel']
|
||||
},
|
||||
|
||||
browserSync: {
|
||||
serve: {
|
||||
bsFiles: { src: [ '<%= config.dest %>/**.*' ] },
|
||||
options: {
|
||||
watchTask: true,
|
||||
server: '<%= config.dest %>',
|
||||
open: 'local',
|
||||
notify: false,
|
||||
ghostMode: {
|
||||
clicks: true,
|
||||
forms: true,
|
||||
scroll: true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
// Tasks
|
||||
grunt.registerTask('lint', ['sasslint', 'eslint']);
|
||||
grunt.registerTask('build', ['clean:build', 'copy', 'sass', 'postcss', 'assemble:buildDev']);
|
||||
grunt.registerTask('buildProd', ['clean:build', 'copy', 'sass', 'postcss', 'assemble:buildProd']);
|
||||
grunt.registerTask('default', ['lint', 'build']);
|
||||
|
||||
grunt.registerTask('serve', ['lint', 'build', 'browserSync', 'watch']);
|
||||
};
|
Reference in New Issue
Block a user