Grunt + Assets
This commit is contained in:
parent
110eff15f0
commit
8405935ba6
|
@ -0,0 +1,452 @@
|
|||
/**
|
||||
* Gruntfile
|
||||
*
|
||||
* If you created your Sails app with `sails new foo --linker`,
|
||||
* the following files will be automatically injected (in order)
|
||||
* into the EJS and HTML files in your `views` and `assets` folders.
|
||||
*
|
||||
* At the top part of this file, you'll find a few of the most commonly
|
||||
* configured options, but Sails' integration with Grunt is also fully
|
||||
* customizable. If you'd like to work with your assets differently
|
||||
* you can change this file to do anything you like!
|
||||
*
|
||||
* More information on using Grunt to work with static assets:
|
||||
* http://gruntjs.com/configuring-tasks
|
||||
*/
|
||||
|
||||
module.exports = function (grunt) {
|
||||
|
||||
var cssFilesToInject = [
|
||||
|
||||
// Vendors
|
||||
'styles/vendor/**/*.css',
|
||||
|
||||
// All of the rest of your app styles imported here
|
||||
'styles/**/*.css'
|
||||
];
|
||||
|
||||
var jsFilesToInject = [
|
||||
|
||||
// Below, as a demonstration, you'll see the built-in dependencies
|
||||
// linked in the proper order order
|
||||
|
||||
// Bring in the socket.io client
|
||||
//'scripts/vendor/socket.io.js',
|
||||
|
||||
// A simpler boilerplate library for getting you up and running w/ an
|
||||
// automatic listener for incoming messages from Socket.io.
|
||||
//'scripts/vendor/app.js',
|
||||
|
||||
// Vendors
|
||||
'scripts/vendor/**/*.js',
|
||||
|
||||
// Marionnette Application
|
||||
'scripts/config/**/*.js',
|
||||
'scripts/app.js',
|
||||
'scripts/controllers/**/*.js',
|
||||
'scripts/entities/**/*.js',
|
||||
'scripts/views/**/*.js',
|
||||
'scripts/components/**/*.js',
|
||||
'scripts/apps/**/*.js',
|
||||
|
||||
// All of the rest of your app scripts imported here
|
||||
'scripts/**/*.js'
|
||||
];
|
||||
|
||||
var templateFilesToInject = [
|
||||
'templates/**/*.html',
|
||||
];
|
||||
|
||||
var ecoFilesToInject = [
|
||||
'templates/**/*.eco',
|
||||
'scripts/**/*.eco',
|
||||
'scripts/apps/**/**/templates/*.eco'
|
||||
];
|
||||
|
||||
// Modify css file injection paths to use
|
||||
cssFilesToInject = cssFilesToInject.map(function (path) {
|
||||
return 'www/' + path;
|
||||
});
|
||||
|
||||
// Modify js file injection paths to use
|
||||
jsFilesToInject = jsFilesToInject.map(function (path) {
|
||||
return 'www/' + path;
|
||||
});
|
||||
|
||||
templateFilesToInject = templateFilesToInject.map(function (path) {
|
||||
return 'assets/' + path;
|
||||
});
|
||||
|
||||
ecoFilesToInject = ecoFilesToInject.map(function (path) {
|
||||
return 'assets/' + path;
|
||||
});
|
||||
|
||||
// Get path to core grunt dependencies
|
||||
grunt.loadNpmTasks('grunt-concurrent');
|
||||
grunt.loadNpmTasks('grunt-run');
|
||||
grunt.loadNpmTasks('grunt-contrib-clean');
|
||||
grunt.loadNpmTasks('grunt-contrib-copy');
|
||||
grunt.loadNpmTasks('grunt-contrib-concat');
|
||||
grunt.loadNpmTasks('grunt-contrib-connect');
|
||||
grunt.loadNpmTasks('grunt-sails-linker');
|
||||
grunt.loadNpmTasks('grunt-contrib-jst');
|
||||
grunt.loadNpmTasks('grunt-contrib-watch');
|
||||
grunt.loadNpmTasks('grunt-contrib-uglify');
|
||||
grunt.loadNpmTasks('grunt-contrib-cssmin');
|
||||
grunt.loadNpmTasks('grunt-contrib-less');
|
||||
grunt.loadNpmTasks('grunt-contrib-coffee');
|
||||
grunt.loadNpmTasks('grunt-contrib-sass');
|
||||
grunt.loadNpmTasks('grunt-eco');
|
||||
grunt.loadNpmTasks('grunt-groc');
|
||||
|
||||
// Project configuration.
|
||||
grunt.initConfig({
|
||||
pkg: grunt.file.readJSON('package.json'),
|
||||
|
||||
copy: {
|
||||
reload: {
|
||||
files: [
|
||||
{
|
||||
expand: true,
|
||||
cwd: './assets',
|
||||
src: ['templates/core/reload.html'],
|
||||
dest: 'www',
|
||||
rename: function(dest, src) {
|
||||
return dest + '/index.html'
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
dev: {
|
||||
files: [
|
||||
{
|
||||
expand: true,
|
||||
cwd: './assets',
|
||||
src: ['**/*.!(coffee|scss|sass|eco|haml)'],
|
||||
dest: 'www'
|
||||
}
|
||||
]
|
||||
},
|
||||
build: {
|
||||
files: [
|
||||
{
|
||||
expand: true,
|
||||
cwd: 'www',
|
||||
src: ['**/*'],
|
||||
dest: 'www'
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
clean: {
|
||||
dev: [
|
||||
'www/scripts',
|
||||
'www/styles',
|
||||
'www/images',
|
||||
'www/fonts',
|
||||
'www/templates',
|
||||
'www/index.html',
|
||||
'www/templates.js'
|
||||
],
|
||||
build: ['www']
|
||||
},
|
||||
|
||||
jst: {
|
||||
dev: {
|
||||
|
||||
// To use other sorts of templates, specify the regexp below:
|
||||
// options: {
|
||||
// templateSettings: {
|
||||
// interpolate: /\{\{(.+?)\}\}/g
|
||||
// }
|
||||
// },
|
||||
|
||||
files: {
|
||||
// 'www/jst.js': templateFilesToInject
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
eco: {
|
||||
dev: {
|
||||
files: {
|
||||
'www/templates.js': ecoFilesToInject
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
less: {
|
||||
dev: {
|
||||
files: [
|
||||
{
|
||||
expand: true,
|
||||
cwd: 'assets/styles/',
|
||||
src: ['*.less'],
|
||||
dest: 'www/styles/',
|
||||
ext: '.css'
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
sass: {
|
||||
dev: {
|
||||
files: [
|
||||
{
|
||||
expand: true,
|
||||
cwd: 'assets/styles/',
|
||||
src: ['*.scss', '*.sass'],
|
||||
dest: 'www/styles/',
|
||||
ext: '.css'
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
groc: {
|
||||
markdown: [
|
||||
"README.md"
|
||||
],
|
||||
coffeescript: [
|
||||
"assets/scripts/*.coffee",
|
||||
"assets/scripts/**/*.coffee"
|
||||
],
|
||||
javascript: [
|
||||
],
|
||||
stylesheet: [
|
||||
"assets/styles/*.scss",
|
||||
"assets/styles/**/*.scss"
|
||||
],
|
||||
options: {
|
||||
"out": "assets/doc/",
|
||||
"strip": "assets/",
|
||||
"index": "README.md",
|
||||
'index-page-title': "BambooJS Documentation"
|
||||
}
|
||||
},
|
||||
|
||||
coffee: {
|
||||
dev: {
|
||||
options:{
|
||||
bare:true
|
||||
},
|
||||
files: [
|
||||
{
|
||||
expand: true,
|
||||
cwd: 'assets/scripts/',
|
||||
src: ['**/*.coffee'],
|
||||
dest: 'www/scripts/',
|
||||
ext: '.js'
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
concat: {
|
||||
js: {
|
||||
src: jsFilesToInject,
|
||||
dest: 'www/concat/production.js'
|
||||
},
|
||||
css: {
|
||||
src: cssFilesToInject,
|
||||
dest: 'www/concat/production.css'
|
||||
}
|
||||
},
|
||||
|
||||
uglify: {
|
||||
dist: {
|
||||
src: ['www/concat/production.js'],
|
||||
dest: 'www/min/production.js'
|
||||
}
|
||||
},
|
||||
|
||||
cssmin: {
|
||||
dist: {
|
||||
src: ['www/concat/production.css'],
|
||||
dest: 'www/min/production.css'
|
||||
}
|
||||
},
|
||||
|
||||
'sails-linker': {
|
||||
|
||||
devJs: {
|
||||
options: {
|
||||
startTag: '<!--SCRIPTS-->',
|
||||
endTag: '<!--SCRIPTS END-->',
|
||||
fileTmpl: '<script src="%s"></script>',
|
||||
appRoot: 'www/'
|
||||
},
|
||||
files: {
|
||||
'www/**/*.html': jsFilesToInject
|
||||
}
|
||||
},
|
||||
|
||||
prodJs: {
|
||||
options: {
|
||||
startTag: '<!--SCRIPTS-->',
|
||||
endTag: '<!--SCRIPTS END-->',
|
||||
fileTmpl: '<script src="%s"></script>',
|
||||
appRoot: 'www/'
|
||||
},
|
||||
files: {
|
||||
'www/**/*.html': ['www/min/production.js']
|
||||
}
|
||||
},
|
||||
|
||||
devStyles: {
|
||||
options: {
|
||||
startTag: '<!--STYLES-->',
|
||||
endTag: '<!--STYLES END-->',
|
||||
fileTmpl: '<link rel="stylesheet" href="%s">',
|
||||
appRoot: 'www/'
|
||||
},
|
||||
|
||||
// cssFilesToInject defined up top
|
||||
files: {
|
||||
'www/**/*.html': cssFilesToInject
|
||||
}
|
||||
},
|
||||
|
||||
prodStyles: {
|
||||
options: {
|
||||
startTag: '<!--STYLES-->',
|
||||
endTag: '<!--STYLES END-->',
|
||||
fileTmpl: '<link rel="stylesheet" href="%s">',
|
||||
appRoot: 'www/'
|
||||
},
|
||||
files: {
|
||||
'www/index.html': ['www/min/production.css']
|
||||
}
|
||||
},
|
||||
|
||||
// Bring in JST template object
|
||||
devTpl: {
|
||||
options: {
|
||||
startTag: '<!--TEMPLATES-->',
|
||||
endTag: '<!--TEMPLATES END-->',
|
||||
fileTmpl: '<script type="text/javascript" src="%s"></script>',
|
||||
appRoot: 'www/'
|
||||
},
|
||||
files: {
|
||||
'www/index.html': ['www/templates.js']
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
watch: {
|
||||
assets: {
|
||||
|
||||
// Assets to watch:
|
||||
files: ['assets/**/*'],
|
||||
|
||||
// When assets are changed:
|
||||
tasks: ['compileAssets', 'linkAssets']
|
||||
}
|
||||
},
|
||||
|
||||
connect: {
|
||||
options: {
|
||||
port: process.env.PORT || 3131,
|
||||
base: 'dist/',
|
||||
},
|
||||
|
||||
all: {},
|
||||
},
|
||||
|
||||
concurrent: {
|
||||
options: {
|
||||
logConcurrentOutput: true
|
||||
},
|
||||
dev: {
|
||||
tasks: ["run:phonegap", "watch"]
|
||||
}
|
||||
},
|
||||
|
||||
run: {
|
||||
options: {
|
||||
wait: true//false
|
||||
},
|
||||
phonegap: {
|
||||
cmd: 'phonegap',
|
||||
args: ['serve', '--no-autoreload', '-p', 3001]
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
//require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);
|
||||
|
||||
grunt.registerTask('server', [
|
||||
'compileAssets',
|
||||
'linkAssets',
|
||||
'concurrent:dev',
|
||||
]);
|
||||
|
||||
// When Sails is lifted:
|
||||
grunt.registerTask('default', ['server']);
|
||||
|
||||
grunt.registerTask('compileAssets', [
|
||||
'clean:dev',
|
||||
'copy:reload',
|
||||
'jst:dev',
|
||||
'eco:dev',
|
||||
'less:dev',
|
||||
'sass:dev',
|
||||
'coffee:dev',
|
||||
'copy:dev'
|
||||
]);
|
||||
|
||||
grunt.registerTask('linkAssets', [
|
||||
|
||||
// Update link/script/template references in `assets` index.html
|
||||
'sails-linker:devJs',
|
||||
'sails-linker:devStyles',
|
||||
'sails-linker:devTpl'
|
||||
]);
|
||||
|
||||
|
||||
// Build the assets into a web accessible folder.
|
||||
// (handy for phone gap apps, chrome extensions, etc.)
|
||||
grunt.registerTask('build', [
|
||||
'compileAssets',
|
||||
'linkAssets',
|
||||
'clean:build',
|
||||
'copy:build'
|
||||
]);
|
||||
|
||||
// When sails is lifted in production
|
||||
grunt.registerTask('prod', [
|
||||
'clean:dev',
|
||||
'eco:dev',
|
||||
'jst:dev',
|
||||
'less:dev',
|
||||
'sass:dev',
|
||||
'copy:dev',
|
||||
'coffee:dev',
|
||||
'concat',
|
||||
'uglify',
|
||||
'cssmin',
|
||||
'sails-linker:prodJs',
|
||||
'sails-linker:prodStyles',
|
||||
'sails-linker:devTpl'
|
||||
]);
|
||||
|
||||
grunt.registerTask('doc', ['groc']);
|
||||
|
||||
// When API files are changed:
|
||||
// grunt.event.on('watch', function(action, filepath) {
|
||||
// grunt.log.writeln(filepath + ' has ' + action);
|
||||
|
||||
// // Send a request to a development-only endpoint on the server
|
||||
// // which will reuptake the file that was changed.
|
||||
// var baseurl = grunt.option('baseurl');
|
||||
// var gruntSignalRoute = grunt.option('signalpath');
|
||||
// var url = baseurl + gruntSignalRoute + '?action=' + action + '&filepath=' + filepath;
|
||||
|
||||
// require('http').get(url)
|
||||
// .on('error', function(e) {
|
||||
// console.error(filepath + ' has ' + action + ', but could not signal the Sails.js server: ' + e.message);
|
||||
// });
|
||||
// });
|
||||
};
|
|
@ -0,0 +1,38 @@
|
|||
class Momo
|
||||
|
||||
manifest:
|
||||
meta:
|
||||
manifestUrl: "index.json"
|
||||
|
||||
contructor: (args...) ->
|
||||
@bindEvents()
|
||||
|
||||
bindEvents: ->
|
||||
# Navigation Handler
|
||||
window.addEventListener "hashchange", @onHashChange, false
|
||||
document.addEventListener "deviceready", @onDeviceReady, false
|
||||
|
||||
init: ->
|
||||
@initFileSystem()
|
||||
@initIndex()
|
||||
@backupAssets()
|
||||
@loadLocalManifest()
|
||||
@checkForUpdate(app.start, app.start)
|
||||
@updateTimeout = setTimeout( app.checkForLastUpdateCheck, app.manifest.meta.updateFreq )
|
||||
|
||||
initFileSystem: ->
|
||||
|
||||
|
||||
FastClick.attach(document.body)
|
||||
|
||||
start: ->
|
||||
@loadManifest()
|
||||
|
||||
loadManifest: ->
|
||||
manifest = JSON.parse
|
||||
|
||||
update: ->
|
||||
|
||||
updateAvailable: (y, n, f) ->
|
||||
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
{
|
||||
"name": "momo",
|
||||
"private": true,
|
||||
"version": "1.0.3",
|
||||
"description": "Simple cross-platform application implementing self-update mechanisms",
|
||||
"dependencies": {
|
||||
"ejs": "0.8.4",
|
||||
"optimist": "0.3.4"
|
||||
},
|
||||
"scripts": {
|
||||
"debug": "node debug app.js",
|
||||
"grunt": "node_modules/.bin/grunt",
|
||||
"start": "node_modules/.bin/grunt"
|
||||
},
|
||||
"main": "app.js",
|
||||
"repository": "http://git.pwr.link/ghis/momo.git",
|
||||
"author": "Ghislain Loaec",
|
||||
"license": "",
|
||||
"devDependencies": {
|
||||
"font-awesome": "^4.3.0",
|
||||
"grunt": "^0.4.5",
|
||||
"grunt-cli": "^0.1.13",
|
||||
"grunt-concurrent": "^2.0.0",
|
||||
"grunt-contrib-clean": "^0.6.0",
|
||||
"grunt-contrib-coffee": "^0.13.0",
|
||||
"grunt-contrib-concat": "^0.5.1",
|
||||
"grunt-contrib-connect": "^0.10.1",
|
||||
"grunt-contrib-copy": "^0.8.0",
|
||||
"grunt-contrib-cssmin": "^0.12.3",
|
||||
"grunt-contrib-jst": "^0.6.0",
|
||||
"grunt-contrib-less": "^1.0.1",
|
||||
"grunt-contrib-sass": "^0.9.2",
|
||||
"grunt-contrib-uglify": "^0.9.1",
|
||||
"grunt-contrib-watch": "^0.6.1",
|
||||
"grunt-eco": "~0.1.2",
|
||||
"grunt-groc": "~0.5.0",
|
||||
"grunt-run": "^0.3.0",
|
||||
"grunt-sails-linker": "^0.10.1",
|
||||
"matchdep": "^0.3.0",
|
||||
"weinre": "^2.0.0-pre-I0Z7U9OV"
|
||||
}
|
||||
}
|
Reference in New Issue