我目前正在运行 NPM 的 node-sass 工具,但它运行的 libsass 版本是 3.2.2,而我需要运行的版本是 3.2.4,因为这修复了我所在的一个框架中的一个关键错误使用。
我找不到有关如何构建和/或更新 node-sass 或 libsass 以满足我的要求的信息。我已经在运行最新版本的 node-sass 3.1.2。
然而,我的 node-sasspackage.json
似乎有一个 key:value 对,表明 libsass 是 3.2.4,但这显然是不正确的。
升级我的 libsass 版本最简单的方法是什么?
更新
6 月 6 日
我做了一些额外的搜索,但仍然无法让 libsass 处于 3.2.4 版本。我尝试升级旧的 node-sass 包,并检查我的环境变量是否有覆盖。还没有解决办法。
6月7日
看来 node-sass 提供的 Libsass 版本是 3.2.4,但它没有被选中,并且默认为 Libass binarypath
:
path.join(__dirname, '..', 'vendor', sass.binaryName.replace(/_/, '/'));
在我的机器上产生:
H:\myproj\node_modules\gulp-sass\node_modules\node-sass\vendor\win32-x64-14\binding.node
我不知道这是什么意思。看看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', sass.binaryName.replace(/_/, '/'));
}
if (!fs.existsSync(binaryPath) && throwIfNotExists) {
throw new Error(['`libsass` bindings not found in ', binaryPath, '. Try reinstalling `node-sass`?'].join(''));
}
return binaryPath;
};
sass.binaryPath = sass.getBinaryPath();