【问题标题】:Foundation imports with Libsass, node-sass-middleware not compiling使用 Libsass 进行基础导入,node-sass-middleware 未编译
【发布时间】:2016-04-28 04:18:21
【问题描述】:

我正在使用带有 Express 的 Node.js 作为我的应用程序的基础,并尝试使用 npm 包 node-sass-middleware 进行 sass 编译和 foundation-sites em> 为基础 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 获取 /js/jquery.cookie.js 304 7.621 毫秒 - - 获取 /css/style.css - - 毫秒 - - 渲染: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 GET /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 软件包版本。

【问题讨论】:

    标签: node.js express zurb-foundation node-sass


    【解决方案1】:

    在使用不同的 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 文档很少,并且通过上述修改解决了这个问题。

    【讨论】:

    • 我也遇到了同样的问题。您的解决方案有效的原因是,如果您遵循@import 语句,您会看到您导入的所有内容都包含在mixins 中。如果您自己包含[foundation]/scss/foundation.scss,则声明了mixin,但并未实际使用。 @include foundation-everything 是一个混入,最终包含所有这些混入。 (我很好奇以这种方式设计 Foundation 是否有优势)
    • 现在我想到这一点,我看到了优势。如果您 @import [foundation]/scss/foundation,您可以访问项目中的所有 mixin,因此您可以使用 @include 语句包含组件(甚至是组件的一部分)。这为您提供了很多控制权,因此您只构建您需要的部分,而不是在文件级别导入。
    猜你喜欢
    • 2015-02-17
    • 2018-07-17
    • 2013-02-26
    • 2023-04-03
    • 2017-04-16
    • 2014-05-04
    • 2015-12-27
    • 2020-12-09
    • 1970-01-01
    相关资源
    最近更新 更多