AngularJS html5Mode mit Grunt zu verbinden. grunt 0.4.5
Ich habe vor kurzem umgeschaltet, um grunt 0.4.5 und es verändert, wie die Verbindung funktioniert.
Ich zuvor verwendet connect-modrewrite und es funktionierte ziemlich gut (hatte einige Probleme mit urls generiert durch /:parameter).
Hier ist die alte version, arbeitete mit grunt 0.4.1 von generator-angular 0.8.0 mit der middleware Teil modded von mir zu verwenden 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 %>'
]
}
},
Hier ist die neue version von generator-Winkel-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)
];
}
}
},
Wie kann ich dies ändern, um die Verwendung von mod-rewrite oder eine andere Methode zu erreichen html5mode?
Habe ich versucht mit der Methode, die hier bereitgestellt: https://gist.github.com/nnarhinen/7719157
Ich kombinierte es die folgende erstellen:
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)
];
}
Dies ermöglicht es mir zu Ansicht die normale Ansicht, aber das modRewrite-Teil scheint nicht das zu tun, was es braucht, um in eine andere Ansicht über die url.
- Seltsam, ich bin derzeit mit grunt 0.4.5 und der middleware fein gearbeitet. Ich habe versucht eine Reihe von verschiedenen Implementierungen und diese war die einzige, die arbeitete mit einer "base" option.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn jemand stolpert über das hier ist der fix:
(die einzige Zeile Hinzugefügt wurde die modRewrite-Linie)
Stellen Sie sicher, dass die folgenden erklärte an der Oberseite von Ihrem Grunzen Datei:
npm install connect-modrewrite --save-dev
Gegeben, wie die anderen Antworten sind ziemlich ausführlich und nicht beibehalten standardmäßig
grunt-contrib-connect
middlewares, ich kam mit einer Lösung, die verwendet dedizierte middleware –connect-Geschichte-api-fallback
:Obwohl oben akzeptierte Antwort richtig ist. Im hinzufügen der config die ich benutze, funktioniert es perfekt auf CentOs.
Unter 1-3 Schritte sind für die Herstellung von Angularjs clean-URL Arbeit, die in Ihrer lokalen Maschine mit
$ grunt serve
Aber wenn Sie möchten, um Sie laufen problemlos auf Server, speziell nginx müssen Sie auch update nginx config. (Schritt 4)
$ npm install connect-modrewrite --save
Bearbeiten gruntfile.js. Fügen Sie am Anfang der Datei
Dann in Ihre
middleware
:z.B.
3.Dann gehen Sie zu Livereload middleware, fügen Sie
modRewrite
4.Bearbeiten NGINX-config:
Hoffe es hilft 🙂
Hier ist meine Lösung, angepasst an
generator-angular
setup, kann aber überall eingesetzt werden. Es ermöglicht ein umschreiben von syntax (der interessante Teil ist das Beispiel livereload configuarion).