KOA 2 - 使用 node-sass-middleware 将 SASS 编译为 CSS
KOA 2 - Compile SASS to CSS using node-sass-middleware
我正在尝试使用 koa2 获取节点-sass-中间件。有一个模块 koa-sass
可以完美运行,但它正在使用生成器。
module.exports = function (options) {
var mw = require('node-sass-middleware')(options);
return function *(next) {
yield mw.bind(mw, this.req, this.res);
yield next;
};
};
koa deprecated Support for generators will be removed in v3. See the documentation for examples of how to convert old middleware https://github.com/koajs/koa/blob/master/docs/migration.md
所以我想用async/await转换它。
这是我的代码:
module.exports = (options) => {
const sass = require('node-sass-middleware')(options);;
const middleware = async (ctx, next) => {
await sass.bind(sass, ctx.req, ctx.res);
await next();
}
return middleware;
};
它确实注意到 return 一个错误,但它也不会编译。
app.js
app.use(sass({
src: path.join(__dirname + '/scss'),
dest: path.join(__dirname + '/public/stylesheets'),
outputStyle: 'compressed',
indentedSyntax: false
}))
app.use(require('koa-static')(__dirname, 'public'))
文件夹结构
public
|--scss
| |--style.scss
|--public
| |--stylesheets
| | |--style.css
app.js
我认为 wrapper 应该是这样的:
module.exports = function (options) {
const sass = require('node-sass-middleware')(options);
return (ctx, next) => {
return new Promise((resolve, reject) => {
sass.call(sass, ctx.req, ctx.res, (err) => {
if (err) {
reject(err);
} else {
resolve(next());
}
});
});
};
};
我知道这个答案可能会迟到,但是对于任何偶然发现这个问题的人来说:
koa-sassy
Modern Koa middleware for SASS
安装
npm i koa-sassy
入门
const Koa = require('koa')
const sassy = require('koa-sassy')
const app = new Koa()
app.use(sassy(__dirname + '/sass'))
我正在尝试使用 koa2 获取节点-sass-中间件。有一个模块 koa-sass
可以完美运行,但它正在使用生成器。
module.exports = function (options) {
var mw = require('node-sass-middleware')(options);
return function *(next) {
yield mw.bind(mw, this.req, this.res);
yield next;
};
};
koa deprecated Support for generators will be removed in v3. See the documentation for examples of how to convert old middleware https://github.com/koajs/koa/blob/master/docs/migration.md
所以我想用async/await转换它。
这是我的代码:
module.exports = (options) => {
const sass = require('node-sass-middleware')(options);;
const middleware = async (ctx, next) => {
await sass.bind(sass, ctx.req, ctx.res);
await next();
}
return middleware;
};
它确实注意到 return 一个错误,但它也不会编译。
app.js
app.use(sass({
src: path.join(__dirname + '/scss'),
dest: path.join(__dirname + '/public/stylesheets'),
outputStyle: 'compressed',
indentedSyntax: false
}))
app.use(require('koa-static')(__dirname, 'public'))
文件夹结构
public
|--scss
| |--style.scss
|--public
| |--stylesheets
| | |--style.css
app.js
我认为 wrapper 应该是这样的:
module.exports = function (options) {
const sass = require('node-sass-middleware')(options);
return (ctx, next) => {
return new Promise((resolve, reject) => {
sass.call(sass, ctx.req, ctx.res, (err) => {
if (err) {
reject(err);
} else {
resolve(next());
}
});
});
};
};
我知道这个答案可能会迟到,但是对于任何偶然发现这个问题的人来说:
koa-sassy
Modern Koa middleware for SASS
安装
npm i koa-sassy
入门
const Koa = require('koa')
const sassy = require('koa-sassy')
const app = new Koa()
app.use(sassy(__dirname + '/sass'))