如何将请求通过管道传递到 nodejs 中的 clean-css?
How to pipe requests into clean-css in nodejs?
我正在尝试将请求输出通过管道传输到 clean-css 以进行缩小,然后将其作为响应提供。有问题的示例应用程序是基于 restify 构建的。
示例 Objective 代码:
var url = "http://www.example.com/css/style.css";
request.get(url).pipe(minify()).pipe(res);
如何定义 minify() 函数来接受流和 return 一个。我已经尝试了几十个包,none 有效。
非常感谢您的帮助!
您可以创建转换流。它从 request.get
创建的流中获取 CSS 代码,执行缩小魔法和 returns 缩小 CSS.
这是一个工作示例:
const restify = require('restify');
const request = require('request');
const { Transform } = require('stream');
const CleanCSS = require('clean-css');
const server = restify.createServer();
const cleanCss = new CleanCSS();
const url = 'http://www.example.com/css/style.css';
function createMinifyTransform() {
return new Transform({
transform(chunk, encoding, callback) {
const output = cleanCss.minify(chunk.toString());
this.push(output.styles);
callback();
}
});
}
function respond(req, res) {
request
.get(url)
.pipe(createMinifyTransform())
.pipe(res);
}
server.get('/', respond);
server.listen(8080, () => console.log('%s listening at %s', server.name, server.url));
我正在尝试将请求输出通过管道传输到 clean-css 以进行缩小,然后将其作为响应提供。有问题的示例应用程序是基于 restify 构建的。
示例 Objective 代码:
var url = "http://www.example.com/css/style.css";
request.get(url).pipe(minify()).pipe(res);
如何定义 minify() 函数来接受流和 return 一个。我已经尝试了几十个包,none 有效。 非常感谢您的帮助!
您可以创建转换流。它从 request.get
创建的流中获取 CSS 代码,执行缩小魔法和 returns 缩小 CSS.
这是一个工作示例:
const restify = require('restify');
const request = require('request');
const { Transform } = require('stream');
const CleanCSS = require('clean-css');
const server = restify.createServer();
const cleanCss = new CleanCSS();
const url = 'http://www.example.com/css/style.css';
function createMinifyTransform() {
return new Transform({
transform(chunk, encoding, callback) {
const output = cleanCss.minify(chunk.toString());
this.push(output.styles);
callback();
}
});
}
function respond(req, res) {
request
.get(url)
.pipe(createMinifyTransform())
.pipe(res);
}
server.get('/', respond);
server.listen(8080, () => console.log('%s listening at %s', server.name, server.url));