我正在努力设置libsass,因为它不像基于Ruby的转换器那样直截了当.有人可以解释如何:
我对包管理器的经验很少,对于任务运行者来说更是如此.
我想node-sass在我的node.js v0.12应用程序中使用该模块以从中受益libsass.
我执行npm i node-sass安装模块,到目前为止没有错误.
现在乱七八糟的开始:
如果我只是打开REPL一个终端试用node-sass然后一切正常但如果我把它包含在我的项目文件中运行node myfile.js然后我得到以下错误信息:
Error: `libsass` bindings not found. Try reinstalling `node-sass`?
Run Code Online (Sandbox Code Playgroud)
该模块在npmjs.com上的描述表明#!/usr/bin/env node在Ubuntu下可能存在解析问题以及如何解决这个问题但在我的机器上并非如此.
我找不到任何有用的东西,所以我希望你能帮助我.
我在Ubuntu 14.10下使用节点v0.12.2.
PS:我已经尝试重新安装node-sass但没有成功.没有什么变化.
我目前正在运行NPM的node-sass工具,但它运行的libsass版本是3.2.2,我需要运行的版本是3.2.4,因为这修复了我在其中一个框架中的一个关键错误使用.

我找不到有关如何构建和/或更新node-sass或libsass以满足我的要求的信息.我已经在运行最新版本的node-sass,3.1.2.
然而,我的node-sass package.json似乎有一个键:值对,表示libsass是3.2.4,但这显然是不正确的.
升级我的libsass版本的最简单方法是什么?
我做了一些额外的搜索,仍然无法使libsass处于3.2.4的版本.我已经尝试升级较旧的node-sass包,并检查我的环境变量是否有覆盖.还没有解决方案.
似乎由node-sass提供的Libsass版本是3.2.4,但它没有被拾取,并且默认为Libass binarypath:
path.join(__dirname, '..', 'vendor', sass.binaryName.replace(/_/, '/'));
Run Code Online (Sandbox Code Playgroud)
在我的机器上产生:
H:\myproj\node_modules\gulp-sass\node_modules\node-sass\vendor\win32-x64-14\binding.node
Run Code Online (Sandbox Code Playgroud)
我不知道这是什么意思.看看node-sass\lib\extensions.js第134行:
sass.getBinaryPath = function(throwIfNotExists) {
var binaryPath;
if (flags['--sass-binary-path']) {
binaryPath = flags['--sass-binary-path'];
} else if (process.env.SASS_BINARY_PATH) {
binaryPath = process.env.SASS_BINARY_PATH;
} else if (pkg.nodeSassConfig && pkg.nodeSassConfig.binaryPath) {
binaryPath = pkg.nodeSassConfig.binaryPath;
// This is the only statement that executes successfully, my libsass binary path is coming from this location. Why?
} else {
binaryPath = path.join(__dirname, '..', 'vendor', …Run Code Online (Sandbox Code Playgroud) 我正在尝试将纱线用于我的最新项目.如何使用yarn安装bootstrap 4 - libsass库
我正在尝试让libsass使用Rails 4资产管道.到目前为止,我已经将Github中的ruby-libsass Gem 克隆到我的应用程序的Vendor文件夹中.我将followig添加到我的gemfile中:
gem 'sassc', path: 'vendor/ruby-libsass/'
Run Code Online (Sandbox Code Playgroud)
然后我按照文档添加了libsass的子模块.在libsass文件夹中,我必须在sass2scss库中克隆才能进行编译.我用make install-shared它创建了它/usr/local/lib/libsass.so.在此之后,运行rake assets:precompile会出现以下错误:
rake aborted!
LoadError: Could not open library 'sass': dlopen(sass, 5): image not found.
Could not open library 'libsass.dylib': dlopen(libsass.dylib, 5): image not found
Run Code Online (Sandbox Code Playgroud)
所以我把libsass.dylib这个符号链接到了/usr/local/lib/libsass.dylib.之后,我收到以下错误:
NameError: uninitialized constant SassC::Lib::Context::SassOptions
我尝试在/ruby-libsass/lib/sassc/lib/context.rb调用SassOptions时注释掉这一行,这似乎使它工作并编译资产.第20行注释掉的代码context.rb:
layout :source_string, :pointer,
:output_string, :string,
# :options, SassOptions,
:error_status, :int,
:error_message, :string,
:c_functions, :pointer,
:included_files, :pointer,
:num_included_files, :int`
Run Code Online (Sandbox Code Playgroud)
现在,我遇到的问题是我看不到速度差异.无论是否将libsass添加到我的Gemfile,它都会在7秒左右的时间内编译我的资产.由于初始编译给出了一个与libsass.dylib文件无关的错误,我认为它实际上是使用sassc而不是sass,但它看起来并非如此.
我有什么想法可以错过吗?我没有使用C的经验,所以我甚至不确定我是否正确编译了所有内容,等等.
Node.js用于解析require()调用的算法在伪代码中非常清楚地记录.
萨斯的@import声明我需要同样的事情.
我知道,@import 'foo'将尝试基本名称的各种组合foo,并_foo与扩展.scss,并.sass在同一目录中进口文件,以及相对于任何配置的"负载路径"的......但什么样的顺序,这些都试过,即什么如果有多个文件可以满足@import?以a开头./还是../影响它是否尝试加载路径?还有其他事情会尝试我没有涉及吗?.css文件怎么样?
该指南并未说明"Sass很聪明,并会为您解决问题".该参考文档进入更详细,但还是不拼出来的解决步骤.
任何人都可以在伪代码中提供它使用的确切算法吗?
我刚刚开始使用gulp-sass,有没有"简单"的方法来找出正在使用的Sass版本?
不是我认为这太重要了,而是我在Visual Studio 2015(CTP6)中使用gulp -sass.
我需要知道,因为我想使用Sass mixin,它需要一定的Sass最低版本.
目前,如果我想找出正在使用的Sass版本,我尝试按照这样的方式跟踪,gulp-sass是node-sass的包装器,它反过来为libsass提供Node绑定,这是Sass的C编译器.
因此,为了找到在我的环境中使用的Sass版本,我必须遵循链并尝试确定每个步骤中使用的版本以及它随后用于下一步的版本.
当然必须有一个更简单的方法吗?
所以我用Gulp Sass用gulp-changed(我也试过一饮而尽,新与更新的语法变化),看所有的scss在我的文件夹中的文件.
当我更改基本scss文件时,它将编译没有任何问题.
但是,如果我更改部分,它将不会编译具有该部分依赖性的sass文件.
吞
var SRC = './stylesheets/**/*.scss';
var DEST = './stylesheets';
gulp.task('sass', function() {
return gulp.src(SRC)
.pipe(changed(DEST, { extension: '.css' }))
.pipe(plumber({
errorHandler: handleErrors
}))
.pipe(sourcemaps.init())
.pipe(sass({
includePaths: [
'C:/var/www/mobile 2/stylesheets'
]}))
.pipe(sourcemaps.write('./'))
.on('error', handleErrors)
.pipe(gulp.dest(DEST))
});
Run Code Online (Sandbox Code Playgroud)
文件夹
??? scss
? ??? base.scss
? ??? _partial1.scss
? ??? _partial2.scss
? ??? anotherBase.scss
? ??? _anotherBasePartial1.scss
? ??? _anotherBasePartial2.scss
Run Code Online (Sandbox Code Playgroud)
对base.scss || anotherBase.scss所做的更改进行更改,partial1.scss不做任何更改.
正如您在日志中看到的:
[15:14:02] Starting 'sass'... //here …Run Code Online (Sandbox Code Playgroud) 我正在尝试将NODE_ENV注入一个sass文件中,因此我可以为dev / prod env提供不同的输出,并拥有一个内部具有类似条件的sass函数:
@if (NODE_ENV == 'prod') {}
我的webpack.config看起来像这样:
module: {
loaders: [{
test: /\.scss$/,
loader: "style-loader!raw-loader!sass-loader?includePaths[]=" + path.resolve(__dirname, "./node_modules/compass-mixins/lib")
}]
}
Run Code Online (Sandbox Code Playgroud)
我尝试将数据参数传递给加载程序,但没有任何效果。将不胜感激!