Skip to content

Instantly share code, notes, and snippets.

@commadelimited
Created September 8, 2014 17:00
Show Gist options
  • Save commadelimited/83c78a90d44ea238fb88 to your computer and use it in GitHub Desktop.
Save commadelimited/83c78a90d44ea238fb88 to your computer and use it in GitHub Desktop.
Gruntfile for Node-webkit project
/*jshint camelcase: false*/
module.exports = function (grunt) {
'use strict';
// load all grunt tasks
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-compress');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-rename');
grunt.loadNpmTasks('grunt-contrib-sass');
grunt.loadNpmTasks('grunt-shell');
// configurable paths
var config = {
app: 'app',
dist: 'dist',
tmp: 'tmp',
source: 'source',
resources: 'resources'
};
grunt.initConfig({
config: config,
clean: {
dist: {
files: [{
dot: true,
src: [
'<%= config.dist %>/*',
'<%= config.tmp %>/*'
]
}]
}
},
sass: {
dist: {
options: {
style: 'compressed',
bundleExec: true
},
files: {
'app/css/main.css': 'app/css/sass/main.scss'
}
}
},
jshint: {
files: '<%= config.app %>/js/*.js'
},
shell: {
createIcons: {
options: {
stdout: true
},
command: 'iconutil -c icns <%= config.source %>/Minikeg.iconset'
},
copyIcons: {
options: {
stdout: true
},
command: 'cp <%= config.source %>/Minikeg.icns <%= config.dist %>/Minikeg.app/Contents/Resources/icon.icns'
}
},
copy: {
appMacos: {
files: [{
expand: true,
cwd: '<%= config.app %>',
dest: '<%= config.dist %>/node-webkit.app/Contents/Resources/app.nw',
src: '**'
}, {
expand: true,
cwd: '<%= config.resources %>/mac/',
dest: '<%= config.dist %>/node-webkit.app/Contents/',
filter: 'isFile',
src: '*.plist'
}, {
expand: true,
cwd: '<%= config.resources %>/mac/',
dest: '<%= config.dist %>/node-webkit.app/Contents/Resources/',
filter: 'isFile',
src: '*.icns'
},{
expand: true,
cwd: '<%= config.app %>/../node_modules/xls-to-json',
dest: '<%= config.dist %>/node-webkit.app/Contents/Resources/app.nw/node_modules/xls-to-json',
src: '**'
}]
},
webkit: {
files: [{
expand: true,
cwd: '<%=config.resources %>/node-webkit/MacOS',
dest: '<%= config.dist %>/',
src: '**'
}]
},
copyWinToTmp: {
files: [{
expand: true,
cwd: '<%= config.resources %>/node-webkit/Windows/',
dest: '<%= config.tmp %>/',
src: '**'
}]
}
},
compress: {
appToTmp: {
options: {
archive: '<%= config.tmp %>/app.zip'
},
files: [{
expand: true,
cwd: '<%= config.app %>',
src: ['**']
}]
},
finalWindowsApp: {
options: {
archive: '<%= config.dist %>/Minikeg.zip'
},
files: [{
expand: true,
cwd: '<%= config.tmp %>',
src: ['**']
}]
}
},
rename: {
app: {
files: [{
src: '<%= config.dist %>/node-webkit.app',
dest: '<%= config.dist %>/Minikeg.app'
}]
},
zipToApp: {
files: [{
src: '<%= config.tmp %>/app.zip',
dest: '<%= config.tmp %>/app.nw'
}]
}
}
});
grunt.registerTask('default', ['sass']);
grunt.registerTask('chmod', 'Add lost Permissions.', function () {
var fs = require('fs');
fs.chmodSync('dist/Minikeg.app/Contents/Frameworks/node-webkit Helper EH.app/Contents/MacOS/node-webkit Helper EH', '555');
fs.chmodSync('dist/Minikeg.app/Contents/Frameworks/node-webkit Helper NP.app/Contents/MacOS/node-webkit Helper NP', '555');
fs.chmodSync('dist/Minikeg.app/Contents/Frameworks/node-webkit Helper.app/Contents/MacOS/node-webkit Helper', '555');
fs.chmodSync('dist/Minikeg.app/Contents/MacOS/node-webkit', '555');
});
grunt.registerTask('icons', [
'shell:createIcons'
]);
grunt.registerTask('build', [
// 'jshint',
'sass',
'clean:dist',
'copy:webkit',
'copy:appMacos',
'rename:app',
'chmod',
'shell:createIcons',
'shell:copyIcons'
]);
grunt.registerTask('check', [
'jshint'
]);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment