Created
January 10, 2019 15:46
-
-
Save mattlockyer/acd3443137bad3d2854c5b680f816462 to your computer and use it in GitHub Desktop.
Custom Gruntfile for materializecss
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const files = [ | |
'js/cash.js', | |
'js/component.js', | |
'js/global.js', | |
'js/anime.min.js', | |
// 'js/collapsible.js', | |
// 'js/dropdown.js', | |
// 'js/modal.js', | |
// 'js/materialbox.js', | |
// 'js/parallax.js', | |
// 'js/tabs.js', | |
// 'js/tooltip.js', | |
// 'js/waves.js', | |
// 'js/toasts.js', | |
// 'js/sidenav.js', | |
// 'js/scrollspy.js', | |
// 'js/autocomplete.js', | |
// 'js/forms.js', | |
// 'js/slider.js', | |
// 'js/cards.js', | |
// 'js/chips.js', | |
// 'js/pushpin.js', | |
// 'js/buttons.js', | |
// 'js/datepicker.js', | |
// 'js/timepicker.js', | |
// 'js/characterCounter.js', | |
// 'js/carousel.js', | |
// 'js/tapTarget.js', | |
// 'js/select.js', | |
// 'js/range.js' | |
] | |
module.exports = function(grunt) { | |
let concatFile = 'temp/js/materialize_concat.js.map'; | |
// configure the tasks | |
let config = { | |
// Jasmine | |
jasmine: { | |
components: { | |
src: ['bin/materialize.js'], | |
options: { | |
vendor: [ | |
'node_modules/jquery/dist/jquery.min.js', | |
'node_modules/jasmine-jquery/lib/jasmine-jquery.js' | |
], | |
styles: 'bin/materialize.css', | |
specs: 'tests/spec/**/*Spec.js', | |
helpers: 'tests/spec/helper.js', | |
keepRunner: true | |
//helpers: 'test/spec/*.js' | |
} | |
} | |
}, | |
// Sass | |
sass: { | |
// Task | |
expanded: { | |
// Target options | |
options: { | |
outputStyle: 'expanded', | |
sourcemap: false | |
}, | |
files: { | |
'dist/css/materialize.css': 'sass/materialize.scss' | |
} | |
}, | |
min: { | |
options: { | |
outputStyle: 'compressed', | |
sourcemap: false | |
}, | |
files: { | |
'dist/css/materialize.min.css': 'sass/materialize.scss' | |
} | |
}, | |
// Compile ghpages css | |
gh: { | |
options: { | |
outputStyle: 'compressed', | |
sourcemap: false | |
}, | |
files: { | |
'css/ghpages-materialize.css': 'sass/ghpages-materialize.scss' | |
} | |
}, | |
// Compile bin css | |
bin: { | |
options: { | |
outputStyle: 'expanded', | |
sourcemap: false | |
}, | |
files: { | |
'bin/materialize.css': 'sass/materialize.scss' | |
} | |
} | |
}, | |
// PostCss Autoprefixer | |
postcss: { | |
options: { | |
processors: [ | |
require('autoprefixer')({ | |
browsers: [ | |
'last 2 versions', | |
'Chrome >= 30', | |
'Firefox >= 30', | |
'ie >= 10', | |
'Safari >= 8' | |
] | |
}) | |
] | |
}, | |
expanded: { | |
src: 'dist/css/materialize.css' | |
}, | |
min: { | |
src: 'dist/css/materialize.min.css' | |
}, | |
gh: { | |
src: 'css/ghpages-materialize.css' | |
}, | |
bin: { | |
src: 'bin/materialize.css' | |
} | |
}, | |
babel: { | |
options: { | |
sourceMap: false, | |
plugins: [ | |
'transform-es2015-arrow-functions', | |
'transform-es2015-block-scoping', | |
'transform-es2015-classes', | |
'transform-es2015-template-literals', | |
'transform-es2015-object-super' | |
] | |
}, | |
bin: { | |
options: { | |
sourceMap: true | |
}, | |
files: { | |
'bin/materialize.js': 'temp/js/materialize_concat.js' | |
} | |
}, | |
dist: { | |
files: { | |
'dist/js/materialize.js': 'temp/js/materialize.js' | |
} | |
} | |
}, | |
// Browser Sync integration | |
browserSync: { | |
bsFiles: ['bin/*', 'css/ghpages-materialize.css', '!**/node_modules/**/*'], | |
options: { | |
server: { | |
baseDir: './' // make server from root dir | |
}, | |
port: 8000, | |
ui: { | |
port: 8080, | |
weinre: { | |
port: 9090 | |
} | |
}, | |
open: false | |
} | |
}, | |
// Concat | |
concat: { | |
options: { | |
separator: ';' | |
}, | |
dist: { | |
// the files to concatenate | |
src: files, | |
// the location of the resulting JS file | |
dest: 'temp/js/materialize.js' | |
}, | |
temp: { | |
// the files to concatenate | |
options: { | |
sourceMap: true, | |
sourceMapStyle: 'link' | |
}, | |
src: files, | |
// the location of the resulting JS file | |
dest: 'temp/js/materialize_concat.js' | |
} | |
}, | |
// Uglify | |
uglify: { | |
options: { | |
// Use these options when debugging | |
// mangle: false, | |
// compress: false, | |
// beautify: true | |
}, | |
dist: { | |
files: { | |
'dist/js/materialize.min.js': ['dist/js/materialize.js'] | |
} | |
}, | |
bin: { | |
files: { | |
'bin/materialize.min.js': ['bin/materialize.js'] | |
} | |
}, | |
extras: { | |
files: { | |
'extras/noUiSlider/nouislider.min.js': ['extras/noUiSlider/nouislider.js'] | |
} | |
} | |
}, | |
// Compress | |
compress: { | |
main: { | |
options: { | |
archive: 'bin/materialize.zip', | |
level: 6 | |
}, | |
files: [ | |
{ expand: true, cwd: 'dist/', src: ['**/*'], dest: 'materialize/' }, | |
{ expand: true, cwd: './', src: ['LICENSE', 'README.md'], dest: 'materialize/' } | |
] | |
}, | |
src: { | |
options: { | |
archive: 'bin/materialize-src.zip', | |
level: 6 | |
}, | |
files: [ | |
{ expand: true, cwd: 'sass/', src: ['materialize.scss'], dest: 'materialize-src/sass/' }, | |
{ expand: true, cwd: 'sass/', src: ['components/**/*'], dest: 'materialize-src/sass/' }, | |
{ | |
expand: true, | |
cwd: 'js/', | |
src: files, | |
dest: 'materialize-src/js/' | |
}, | |
{ expand: true, cwd: 'dist/js/', src: ['**/*'], dest: 'materialize-src/js/bin/' }, | |
{ expand: true, cwd: './', src: ['LICENSE', 'README.md'], dest: 'materialize-src/' } | |
] | |
}, | |
starter_template: { | |
options: { | |
archive: 'templates/starter-template.zip', | |
level: 6 | |
}, | |
files: [ | |
{ expand: true, cwd: 'dist/', src: ['**/*'], dest: 'starter-template/' }, | |
{ | |
expand: true, | |
cwd: 'templates/starter-template/', | |
src: ['index.html', 'LICENSE'], | |
dest: 'starter-template/' | |
}, | |
{ | |
expand: true, | |
cwd: 'templates/starter-template/css', | |
src: ['style.css'], | |
dest: 'starter-template/css' | |
}, | |
{ | |
expand: true, | |
cwd: 'templates/starter-template/js', | |
src: ['init.js'], | |
dest: 'starter-template/js' | |
} | |
] | |
}, | |
parallax_template: { | |
options: { | |
archive: 'templates/parallax-template.zip', | |
level: 6 | |
}, | |
files: [ | |
{ expand: true, cwd: 'dist/', src: ['**/*'], dest: 'parallax-template/' }, | |
{ | |
expand: true, | |
cwd: 'templates/parallax-template/', | |
src: ['index.html', 'LICENSE', 'background1.jpg', 'background2.jpg', 'background3.jpg'], | |
dest: 'parallax-template/' | |
}, | |
{ | |
expand: true, | |
cwd: 'templates/parallax-template/css', | |
src: ['style.css'], | |
dest: 'parallax-template/css' | |
}, | |
{ | |
expand: true, | |
cwd: 'templates/parallax-template/js', | |
src: ['init.js'], | |
dest: 'parallax-template/js' | |
} | |
] | |
} | |
}, | |
// Clean | |
clean: { | |
temp: { | |
src: ['temp/'] | |
} | |
}, | |
// Jade | |
jade: { | |
compile: { | |
options: { | |
pretty: true, | |
data: { | |
debug: false | |
} | |
}, | |
files: { | |
'index.html': 'jade/index.jade', | |
'icons.html': 'jade/icons.jade', | |
'about.html': 'jade/about.jade', | |
'sass.html': 'jade/sass.jade', | |
'getting-started.html': 'jade/getting-started.jade', | |
'mobile.html': 'jade/mobile.jade', | |
'showcase.html': 'jade/showcase.jade', | |
'parallax.html': 'jade/parallax.jade', | |
'parallax-demo.html': 'jade/parallax-demo.jade', | |
'typography.html': 'jade/typography.jade', | |
'color.html': 'jade/color.jade', | |
'shadow.html': 'jade/shadow.jade', | |
'grid.html': 'jade/grid.jade', | |
'media-css.html': 'jade/media-css.jade', | |
'table.html': 'jade/table.jade', | |
'helpers.html': 'jade/helpers.jade', | |
'buttons.html': 'jade/buttons.jade', | |
'navbar.html': 'jade/navbar.jade', | |
'cards.html': 'jade/cards.jade', | |
'preloader.html': 'jade/preloader.jade', | |
'collections.html': 'jade/collections.jade', | |
'badges.html': 'jade/badges.jade', | |
'footer.html': 'jade/footer.jade', | |
'modals.html': 'jade/modals.jade', | |
'dropdown.html': 'jade/dropdown.jade', | |
'tabs.html': 'jade/tabs.jade', | |
'toasts.html': 'jade/toasts.jade', | |
'tooltips.html': 'jade/tooltips.jade', | |
'sidenav.html': 'jade/sidenav.jade', | |
'pushpin.html': 'jade/pushpin.jade', | |
'waves.html': 'jade/waves.jade', | |
'media.html': 'jade/media.jade', | |
'collapsible.html': 'jade/collapsible.jade', | |
'scrollspy.html': 'jade/scrollspy.jade', | |
'fullscreen-slider-demo.html': 'jade/fullscreen-slider-demo.jade', | |
'pagination.html': 'jade/pagination.jade', | |
'breadcrumbs.html': 'jade/breadcrumbs.jade', | |
'carousel.html': 'jade/carousel.jade', | |
'feature-discovery.html': 'jade/feature-discovery.jade', | |
'pulse.html': 'jade/pulse.jade', | |
'pushpin-demo.html': 'jade/pushpin-demo.jade', | |
'css-transitions.html': 'jade/css-transitions.jade', | |
'themes.html': 'jade/themes.jade', | |
'404.html': 'jade/404.jade', | |
'autocomplete.html': 'jade/autocomplete.jade', | |
'checkboxes.html': 'jade/checkboxes.jade', | |
'chips.html': 'jade/chips.jade', | |
'pickers.html': 'jade/pickers.jade', | |
'radio-buttons.html': 'jade/radio-buttons.jade', | |
'range.html': 'jade/range.jade', | |
'select.html': 'jade/select.jade', | |
'switches.html': 'jade/switches.jade', | |
'text-inputs.html': 'jade/text-inputs.jade', | |
'support-us.html': 'jade/support-us.jade', | |
'floating-action-button.html': 'jade/floating-action-button.jade', | |
'auto-init.html': 'jade/auto-init.jade' | |
} | |
} | |
}, | |
// Watch Files | |
watch: { | |
jade: { | |
files: ['jade/**/*'], | |
tasks: ['jade_compile'], | |
options: { | |
interrupt: false, | |
spawn: false | |
} | |
}, | |
js: { | |
files: ['js/**/*', '!js/init.js'], | |
tasks: ['js_compile'], | |
options: { | |
interrupt: false, | |
spawn: false | |
} | |
}, | |
sass: { | |
files: ['sass/**/*'], | |
tasks: ['sass_compile'], | |
options: { | |
interrupt: false, | |
spawn: false | |
} | |
} | |
}, | |
// Concurrent | |
concurrent: { | |
options: { | |
logConcurrentOutput: true, | |
limit: 10 | |
}, | |
monitor: { | |
tasks: [ | |
'jade_compile', | |
'sass_compile', | |
'js_compile', | |
'watch:jade', | |
'watch:js', | |
'watch:sass', | |
'notify:watching', | |
'server' | |
] | |
} | |
}, | |
// Notifications | |
notify: { | |
watching: { | |
options: { | |
enabled: true, | |
message: 'Watching Files!', | |
title: 'Materialize', // defaults to the name in package.json, or will use project directory's name | |
success: true, // whether successful grunt executions should be notified automatically | |
duration: 1 // the duration of notification in seconds, for `notify-send only | |
} | |
}, | |
sass_compile: { | |
options: { | |
enabled: true, | |
message: 'Sass Compiled!', | |
title: 'Materialize', | |
success: true, | |
duration: 1 | |
} | |
}, | |
js_compile: { | |
options: { | |
enabled: true, | |
message: 'JS Compiled!', | |
title: 'Materialize', | |
success: true, | |
duration: 1 | |
} | |
}, | |
jade_compile: { | |
options: { | |
enabled: true, | |
message: 'Jade Compiled!', | |
title: 'Materialize', | |
success: true, | |
duration: 1 | |
} | |
}, | |
server: { | |
options: { | |
enabled: true, | |
message: 'Server Running!', | |
title: 'Materialize', | |
success: true, | |
duration: 1 | |
} | |
} | |
}, | |
// Text Replace | |
replace: { | |
version: { | |
// Does not edit README.md | |
src: ['bower.json', 'package.json', 'package.js', 'jade/**/*.html'], | |
overwrite: true, | |
replacements: [ | |
{ | |
from: grunt.option('oldver'), | |
to: grunt.option('newver') | |
} | |
] | |
}, | |
readme: { | |
// Changes README.md | |
src: ['README.md'], | |
overwrite: true, | |
replacements: [ | |
{ | |
from: 'Current Version : v' + grunt.option('oldver'), | |
to: 'Current Version : v' + grunt.option('newver') | |
} | |
] | |
} | |
}, | |
// Create Version Header for files | |
usebanner: { | |
release: { | |
options: { | |
position: 'top', | |
banner: | |
'/*!\n * Materialize v' + | |
grunt.option('newver') + | |
' (http://materializecss.com)\n * Copyright 2014-2017 Materialize\n * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE)\n */', | |
linebreak: true | |
}, | |
files: { | |
src: ['dist/css/*.css', 'dist/js/*.js'] | |
} | |
} | |
}, | |
// Rename files | |
rename: { | |
rename_src: { | |
src: 'bin/materialize-src' + '.zip', | |
dest: 'bin/materialize-src-v' + grunt.option('newver') + '.zip', | |
options: { | |
ignore: true | |
} | |
}, | |
rename_compiled: { | |
src: 'bin/materialize' + '.zip', | |
dest: 'bin/materialize-v' + grunt.option('newver') + '.zip', | |
options: { | |
ignore: true | |
} | |
} | |
} | |
}; | |
grunt.initConfig(config); | |
// load the tasks | |
// grunt.loadNpmTasks('grunt-gitinfo'); | |
grunt.loadNpmTasks('grunt-contrib-watch'); | |
grunt.loadNpmTasks('grunt-sass'); | |
grunt.loadNpmTasks('grunt-contrib-concat'); | |
grunt.loadNpmTasks('grunt-contrib-uglify'); | |
grunt.loadNpmTasks('grunt-contrib-compress'); | |
grunt.loadNpmTasks('grunt-contrib-clean'); | |
grunt.loadNpmTasks('grunt-contrib-jade'); | |
grunt.loadNpmTasks('grunt-concurrent'); | |
grunt.loadNpmTasks('grunt-notify'); | |
grunt.loadNpmTasks('grunt-text-replace'); | |
grunt.loadNpmTasks('grunt-banner'); | |
grunt.loadNpmTasks('grunt-rename-util'); | |
grunt.loadNpmTasks('grunt-browser-sync'); | |
grunt.loadNpmTasks('grunt-contrib-jasmine'); | |
grunt.loadNpmTasks('grunt-postcss'); | |
grunt.loadNpmTasks('grunt-babel'); | |
// define the tasks | |
grunt.registerTask('release', [ | |
'sass:expanded', | |
'sass:min', | |
'postcss:expanded', | |
'postcss:min', | |
'concat:dist', | |
'babel:dist', | |
'uglify:dist', | |
'uglify:extras', | |
'usebanner:release', | |
'compress:main', | |
'compress:src', | |
'compress:starter_template', | |
'compress:parallax_template', | |
'replace:version', | |
'replace:readme', | |
'rename:rename_src', | |
'rename:rename_compiled', | |
'clean:temp' | |
]); | |
grunt.task.registerTask('configureBabel', 'configures babel options', function() { | |
config.babel.bin.options.inputSourceMap = grunt.file.readJSON(concatFile); | |
}); | |
grunt.registerTask('jade_compile', ['jade', 'notify:jade_compile']); | |
grunt.registerTask('js_compile', ['concat:temp', 'configureBabel', 'babel:bin', 'clean:temp']); | |
grunt.registerTask('sass_compile', [ | |
'sass:gh', | |
'sass:bin', | |
'postcss:gh', | |
'postcss:bin', | |
'notify:sass_compile' | |
]); | |
grunt.registerTask('server', ['browserSync', 'notify:server']); | |
grunt.registerTask('monitor', ['concurrent:monitor']); | |
grunt.registerTask('travis', ['js_compile', 'sass_compile', 'jasmine']); | |
}; |
It's old and I don't use anymore. Any suggestion on how to fix?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@matt Your script returns the following issue