0

我正在使用带有 Express 的 Node.js 作为我的应用程序的基础,并尝试使用 npm 包node-sass-middleware进行 sass 编译和基础站点的基础 scss 源。

我的 app.js 包含以下内容,

var sass = require('node-sass');
var sassMiddleware = require('node-sass-middleware');

app.use(sassMiddleware({
src: path.join(__dirname,'scss'),
dest: path.join(__dirname,'public/css'),
prefix: '/css',
includePaths:[path.join(__dirname, 'node_modules/foundation-sites/scss/')], //Make sure we include the foundation library. ^-^;
debug: true,
outputStyle: 'extended'

}));
app.use(express.static(path.join(__dirname, 'public')));

我的 style.scss 看起来像:

@import 'foundation';

@import 'stuff'; /*Testing imports functionality*/

body{

    color:black; /*Just for testing compilation*/

}

和 stuff.scss 看起来像:

somerandomtag{

    @extend body;
    border:5px solid black;

}

在我的 layout.jade 我添加了

link(rel='stylesheet', href='/css/style.css')

当我刷新页面时,在我的日志中我可以看到以下输出:

GET /login 200 356.910 ms - 511 来源:F:\Users\trutt\Documents\Projects\MyProject\scss\style.scss 目标:F:\Users\trutt\Documents\Projects\MyProject\public\css\style.css
阅读:F:\Users\trutt\Documents\Projects\MyProject\public\css\style.css GET /js/jquery.cookie.js 304 7.621 ms - - GET /css/style.css - - ms - - 渲染: F:\Users\trutt\Documents\Projects\MyProject\scss\style.scss 来源:F:\Users\trutt\Documents\Projects\MyProject\scss\style.scss 目的地:F:\Users\trutt\Documents\Projects \MyProject\public\css\style.css 获取 /css/style.css 200 7.127 毫秒 - 269

所有最终导致编译的 style.css:

/**
 * Foundation for Sites by ZURB
 * Version 6.2.1
 * foundation.zurb.com
 * Licensed under MIT Open Source
 */
somerandomtag {
  border: 5px solid black; }

/*Testing imports functionality*/
body, somerandomtag {
  color: black;
  /*Just for testing compilation*/ }

基础本身的标题是可见的,这告诉我我的包含路径正在工作。我已经证明 Sass 似乎是通过编译检查和导入测试以及继承来工作的。但是...所有基础 CSS 规则在哪里?我错过了什么吗?

所有安装的软件包都是在过去 24 小时内直接从 npm 新安装的,所以我假设我正在使用最新的 npm 软件包版本。

4

1 回答 1

3

在玩了几个小时的不同 sass/gulp/gem 替代品之后,我发现了我的问题。

我正在探索 npm 包中包含的基础站点中包含的文件。

似乎在 app.js 中改变了以下内容

includePaths:[path.join(__dirname, 'node_modules/foundation-sites/scss/')],

includePaths:[path.join(__dirname, 'node_modules/foundation-sites/assets/')],

修复了问题。

我相信这是因为上述资产路径中的文件foundation.scss包含

@import '../scss/foundation';

@include foundation-everything;

我认为底线是造成差异的原因。/scss/ 文件夹中的其他文件可能不包括基础所有内容。我认为这是编译的基础 css 的主要包含。

同样,建立在关于为什么以及如何工作的假设之上,但是在 Express 上通过 NPM 使用 node-sass-middleware 的 Foundation 文档很少,并且通过上述修改解决了这个问题。

于 2016-04-29T03:34:38.260 回答