在 IE8 中进行测试时,由于不支持 Web 套接字,LiveReload 会引发错误。有没有办法配置 yeoman 来禁用 LiveReload?
5 回答
Yeoman 不支持 IE8,这是有充分理由的。
但是,您可以执行 Allan 描述的操作,或者您可以server
通过将其放入 Gruntfile 中来覆盖该任务:
grunt.registerTask('server', 'yeoman-server');
尝试使用<!--[if !IE]><!--></body><!--<![endif]--><!--[if IE]></body><!--<![endif]-->
而不是</body>
.
生成器会尝试替换第一个</body>
元素并在它之前添加 livereload 片段,因此代码将被放置在 IE 空间不可见的位置。
PS这是肮脏的黑客,所以小心使用
把它放在你的 Gruntfile 中:
grunt.registerHelper('reload:inject', function () {
return function inject(req, res, next) {
return next();
}});
是的,我知道有一个。
- 转到您的项目文件夹并找到该文件
Gruntfile.js
- 在编辑器中打开文件
- 删除
reload:
在watch:
它看起来像这样:
// default watch configuration
watch: {
coffee: {
files: 'app/scripts/**/*.coffee',
tasks: 'coffee reload'
},
compass: {
files: [
'app/styles/**/*.{scss,sass}'
],
tasks: 'compass reload'
},
reload: {
files: [
'app/*.html',
'app/styles/**/*.css',
'app/scripts/**/*.js',
'app/images/**/*'
],
tasks: 'reload'
}
}
在你删除它之后是这样的:
// default watch configuration
watch: {
coffee: {
files: 'app/scripts/**/*.coffee',
tasks: 'coffee reload'
},
compass: {
files: [
'app/styles/**/*.{scss,sass}'
],
tasks: 'compass reload'
}
}
我想我已经看到了一个命令行标志,但我找不到它。
Yeoman Livereload 由两部分组成:插入 livereload 片段的中间件和 watch 任务中的 livereload 目标。要禁用 livereload,请同时删除:
Gruntfile 顶部的 Livereload 片段:
// Generated on ...
'use strict';
var LIVERELOAD_PORT = 35729; // <- Delete this
var lrSnippet = require('connect-livereload')({port: LIVERELOAD_PORT}); // <- Delete this
var mountFolder = function (connect, dir) {
return connect.static(require('path').resolve(dir));
};
Watch 中的 Livereload 任务:
watch: {
// Delete this target
livereload: {
options: {
livereload: LIVERELOAD_PORT
},
files: [
//...
]
}
}
以及插入片段的中间件:
connect: {
options: {
port: 9000,
hostname: 'localhost'
},
livereload: {
options: {
middleware: function (connect) {
return [
lrSnippet, // <- Delete this middleware
mountFolder(connect, '.tmp'),
mountFolder(connect, yeomanConfig.app)
];
}
}
有关修复 Yeoman 中的 livereload-connect 问题的更新,请跟踪此问题:https ://github.com/yeoman/generator-webapp/issues/63