【发布时间】:2014-06-18 10:51:44
【问题描述】:
我最近切换到 grunt 0.4.5,它改变了连接的工作方式。
我之前使用过 connect-modrewrite,它工作得很好(在 /:parameter 生成的 url 上有一些问题)。
这是与 grunt 0.4.1 一起工作的旧版本,从 generator-angular 0.8.0 开始,中间件部分由我修改以使用 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?p>
我尝试使用这里提供的方法: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 访问任何其他视图。
【问题讨论】:
-
奇怪,我目前正在使用 grunt 0.4.5 并且中间件工作正常。我尝试了许多不同的实现,这是唯一一个使用“基本”选项的实现。