将 gzip 压缩应用于 grunt-contrib-connect 提供的文件

ugl*_*low 5 compression gzip connect gruntjs

这非常简单:我想在将网站部署到 Apache 之前使用 grunt-contrib-connect 模拟网站的页面大小。

使用 Apache,打开 gzip 压缩非常简单。然而,对于 grunt-contrib-connect,我还没有找到让它工作的方法。这是我迄今为止在 Gruntfile.js 中尝试过的内容:

var compression = require('compression');

...
// The actual grunt server settings
connect: {
  dev: {
    options: {
      open: false,
      base: 'dev',
      port: '4000',
      hostname: 'localhost',
      livereload: 35729,
      onCreateServer: [compression()]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

connect: {
  dev: {
    options: {
      open: false,
      base: 'dev',
      port: '4000',
      hostname: 'localhost',
      livereload: 35729,
      middleware: [compression()]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我可以正确提供文件,但是当我使用 Chrome 开发工具查看网络请求时,我可以看到连接网络服务器提供的任何文件都没有应用压缩。我究竟做错了什么?

Vis*_*ath 4

在 grunt-contrib-connect 任务中,如果您向中间件提供数组,它将完全用您提供的中间件替换默认中间件。但是,如果您将中间件选项指定为函数,它将按照您的预期工作(将您的中间件链接到默认中间件

middleware: function(connect, options, middlewares) { 
    middlewares.unshift(compression()); 
    return middlewares; 
}
Run Code Online (Sandbox Code Playgroud)