我最近切换到grunt 0.4.5,它改变了连接的工作方式。
我以前使用过connect-modrewrite,它工作得很好(/:parameter生成的URL出现了一些问题)。
这是与生成器角度0.8.0的grunt 0.4.1一起使用的旧版本,中间件部分由我修改为使用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 %>' ] } },
这是Generator-angular 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) ]; } } },
如何更改此格式以使用mod-rewrite或任何其他方法来实现html5mode?
我尝试使用此处提供的方法:https : //gist.github.com/nnarhinen/7719157 我将其组合以创建以下内容:
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) ]; }
这使我可以查看普通视图,但是modRewrite部分似乎没有执行所需的操作,以便通过url进入任何其他视图。
如果有人偶然发现此问题,请解决以下问题:
(添加的唯一行是modRewrite行)
livereload: { options: { open: true, middleware: function (connect) { return [ modRewrite(['^[^\\.]*$ /index.html [L]']), connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } },
确保在grunt文件的顶部声明了以下内容:
var modRewrite = require('connect-modrewrite');