Configuração do Grunt para Pattern Lab: Live Reload, observa os arquivos Sass e HTML em busca de alterações, usa o Compass para compilar CSS

module.exports = function (grunt) {

// Load grunt tasks automatically
require('load-grunt-tasks')(grunt);

// Time how long tasks take. Can help when optimizing build times
require('time-grunt')(grunt);

// Define the configuration for all the tasks
grunt
.initConfig({

// Compiles Sass to CSS and generates debug files if requested
compass
: {
options
: {
assetCacheBuster
: false,
cssDir
: 'css',
debugInfo
: true,
fontsDir
: 'fonts',
force
: true,
generatedImagesDir
: 'images',
imagesDir
: 'images',
javascriptsDir
: 'js',
noLineComments
: false,
outputStyle
: 'expanded',
raw
: 'Sass::Script::Number.precision = 10n',
relativeAssets
: false,
require: ['breakpoint', 'sass-globbing', 'singularitygs', 'singularity-extras'],
sassDir
: 'source/sass',
sourcemap
: true,
},
patternlab
: {
options
: {
basePath
: 'patternlab/',
},
},
},

// Run some tasks in parallel to speed up the build process
concurrent
: {
patternlab
: {
tasks
: [
'shell:patternlabStart',
'watch'
],
options
: {
logConcurrentOutput
: true
}
}
},

shell
: {
patternlabStart
: {
command
: [ // generate patterns & enable live reloading
'php patternlab/core/builder.php -gp',
'php patternlab/core/autoReloadServer.php'
].join('&&')
},
patternlabRegenerate
: {
command
: [ // regenerate patterns
'php patternlab/core/builder.php -gp',
].join('&&')
}
},

// Watch files for changes and runs tasks based on the changed files
watch
: {
gruntfile
: {
files
: ['Gruntfile.js']
},
html
: {
files
: ['patternlab/source/_patterns/**/*.mustache', 'patternlab/source/_patterns/**/*.json', 'patternlab/source/_data/*.json'],
tasks
: ['shell:patternlabRegenerate'],
options
: {
livereload
: true,
}
},
patternlab
: {
files
: ['patternlab/source/sass/**/*.scss'],
tasks
: ['compass:patternlab'],
options
: {
livereload
: true,
},
}
},

});

grunt
.registerTask('patternlab', [
'concurrent:patternlab',
]);

};```