stylus - 中间件不编译 `styl` 文件
stylus - middleware not compiling the `styl` file
我将 stylus
与中间件集成在一起。但是根本没有调用 compile
函数..
1) 如何使 compile
方法起作用
2) 如何更新 'tcp.css' 每次我更新 'tcp.styl` 文件已修改
这是我的代码:
var connect = require('connect'),
serveStatic = require('serve-static'),
stylus = require('stylus');
var app = connect();
app.use(stylus.middleware({
src : __dirname + '/app/css', //inside i have tcp.styl
dest : __dirname + '/app/css', //i require tcp.css
force : true,
compile : function(str, path) {
console.log('compiled'); //not called at all..
return stylus(str, path)
.set('filename', path) //file name i need to update as 'tcp.css'?
.set('warn', true)
.set('compress', true);
}
}));
app.use(serveStatic("app"));
app.listen(5000, function () {console.log("HI", __dirname);}); //works!
文件结构:
我有一个示例,但在表达中,它可以满足您的要求。
根目录'app'及其文件
app.js index.jade public
public/stylesheets 包含一个 .styl 文件
public/stylesheets/tcp.styl
index.jade 正在连接已编译的 .css
link(rel="stylesheet", href="/stylesheets/tcp.css")
在 index.jade 中添加一个段落并在 tcp.styl 中设置样式,当您 运行 服务器时,您的文件将从 tcp.styl 自动编译 -> tcp.css。样式表文件夹将包含两个文件
tcp.styl tcp.css
希望对您有所帮助。
App.js 文件看起来像这样
var express = require('express'),
nib = require('nib'),
stylus = require('stylus');
var app = express();
app.set('view engine', 'jade')
app.use(stylus.middleware({
src: __dirname + '/public',
compile: function compile(str, path) {
return stylus(str)
.set('filename', path)
.use(nib())
}
}));
app.use(express.static(__dirname + '/public'));
app.get('/', function (req, res) {
res.render('../index');
});
app.listen(3000);
console.log('Server listening on port 3000');
我查看了您的应用程序结构。它与您的配置不匹配。您的文件位于 ./public/stylus/tcp.styl
,但需要与您的 src
手写笔配置选项相匹配。使用此结构进行设置:
- 将您的手写笔代码移至
./public/css/tcp.styl
- 将 .styl 和 .css 文件放在一起可以简化操作。
- 触控笔中间件选项:
src: __dirname + '/public'
- 删除手写笔中间件
dest
。它将默认与 src
相同,一切都会更简单。
- 要加载的 URI
/css/tcp.css
- 已编译 css 将在
./public/css/tcp.css
中结束,在 stylus 中间件编译后由您的静态中间件提供服务。
我将 stylus
与中间件集成在一起。但是根本没有调用 compile
函数..
1) 如何使 compile
方法起作用
2) 如何更新 'tcp.css' 每次我更新 'tcp.styl` 文件已修改
这是我的代码:
var connect = require('connect'),
serveStatic = require('serve-static'),
stylus = require('stylus');
var app = connect();
app.use(stylus.middleware({
src : __dirname + '/app/css', //inside i have tcp.styl
dest : __dirname + '/app/css', //i require tcp.css
force : true,
compile : function(str, path) {
console.log('compiled'); //not called at all..
return stylus(str, path)
.set('filename', path) //file name i need to update as 'tcp.css'?
.set('warn', true)
.set('compress', true);
}
}));
app.use(serveStatic("app"));
app.listen(5000, function () {console.log("HI", __dirname);}); //works!
文件结构:
我有一个示例,但在表达中,它可以满足您的要求。
根目录'app'及其文件
app.js index.jade public
public/stylesheets 包含一个 .styl 文件
public/stylesheets/tcp.styl
index.jade 正在连接已编译的 .css
link(rel="stylesheet", href="/stylesheets/tcp.css")
在 index.jade 中添加一个段落并在 tcp.styl 中设置样式,当您 运行 服务器时,您的文件将从 tcp.styl 自动编译 -> tcp.css。样式表文件夹将包含两个文件
tcp.styl tcp.css
希望对您有所帮助。
App.js 文件看起来像这样
var express = require('express'),
nib = require('nib'),
stylus = require('stylus');
var app = express();
app.set('view engine', 'jade')
app.use(stylus.middleware({
src: __dirname + '/public',
compile: function compile(str, path) {
return stylus(str)
.set('filename', path)
.use(nib())
}
}));
app.use(express.static(__dirname + '/public'));
app.get('/', function (req, res) {
res.render('../index');
});
app.listen(3000);
console.log('Server listening on port 3000');
我查看了您的应用程序结构。它与您的配置不匹配。您的文件位于 ./public/stylus/tcp.styl
,但需要与您的 src
手写笔配置选项相匹配。使用此结构进行设置:
- 将您的手写笔代码移至
./public/css/tcp.styl
- 将 .styl 和 .css 文件放在一起可以简化操作。
- 触控笔中间件选项:
src: __dirname + '/public'
- 删除手写笔中间件
dest
。它将默认与src
相同,一切都会更简单。
- 删除手写笔中间件
- 要加载的 URI
/css/tcp.css
- 已编译 css 将在
./public/css/tcp.css
中结束,在 stylus 中间件编译后由您的静态中间件提供服务。