Recentemente sono passato a grunt 0.4.5 e ha cambiato il modo in cui funziona connect.AngularJS html5Mode utilizzando Grunt connect. grunt 0.4.5
In precedenza ho utilizzato connect-modrewrite e ha funzionato molto bene (ha avuto alcuni problemi con gli URL generati dal parametro /:).
Ecco la vecchia versione che ha funzionato con grunt 0.4.1 dal generatore angolare 0.8.0 con la parte middleware modificata da me per utilizzare html5mode.
connect: {
options: {
port: 9000,
hostname: '*IP HERE*',
livereload: 35729,
middleware: function (connect, options) {
var optBase = (typeof options.base === 'string') ? [options.base] : options.base;
return [require('connect-modrewrite')(['!(\\..+)$/[L]'])].concat(
optBase.map(function(path){ return connect.static(path); })
);
}
},
livereload: {
options: {
open: true,
base: [
'.tmp',
'<%= yeoman.app %>'
]
}
},
Ecco la nuova versione da generatore-angolare 0.9.0-1
connect: {
options: {
port: 9000,
hostname: '*IP HERE*',
livereload: 35729
},
livereload: {
options: {
open: true,
middleware: function (connect) {
return [
connect.static('.tmp'),
connect().use(
'/bower_components',
connect.static('./bower_components')
),
connect.static(appConfig.app)
];
}
}
},
Come posso cambiare questa opzione per utilizzare mod-rewrite o qualsiasi altro metodo per raggiungere html5mode?
Ho provato ad utilizzare il metodo fornito qui: https://gist.github.com/nnarhinen/7719157 ho combinato per creare la seguente:
middleware: function (connect) {
return [
connect.static(modRewrite(['^[^\\.]*$ /index.html [L]'])),
connect.static('.tmp'),
connect().use(
'/bower_components',
connect.static('./bower_components')
),
connect.static(appConfig.app)
];
}
Questo mi permette di visualizzare la vista normale, ma la parte modRewrite non sembra di fare ciò di cui ha bisogno al fine di ottenere qualsiasi altra vista tramite url.
Strano, io sono attualmente usando grunt 0.4.5 e il middleware ha funzionato bene. Ho provato diverse implementazioni diverse e questa era l'unica che funzionava con un'opzione "base". –