我目前正在运行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(/_/, '/'));
在我的机器上产生:
H:\myproj\node_modules\gulp-sass\node_modules\node-sass\vendor\win32-x64-14\binding.node
我不知道这意味着什么。请看第134行的node-sass\lib\extensions.js
:
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();
答案 0 :(得分:1)
没有特别的命令。看一下lib/extensions.js
文件。它有几个有趣的路线:
/**
* The default URL can be overriden using
* the environment variable SASS_BINARY_SITE
* or a command line option --sass-binary-site:
*
* node scripts/install.js --sass-binary-site http://example.com/
*
* The URL should to the mirror of the repository
* laid out as follows:
* SASS_BINARY_SITE/
* v3.0.0
* v3.0.0/freebsd-x64-14_binding.node
* ... etc. for all supported versions and platforms
*/
在这种情况下, Libsass
只是source folder。你可以尝试做一个干净的构建。删除node-sass
并重新安装。
npm install node-sass@3.0.0
...
node ./node_modules/.bin/node-sass --version
node-sass 3.0.0 (Wrapper) [JavaScript]
libsass 3.2.2 (Sass Compiler) [C/C++]
更新时:
npm update node-sass
node ./node_modules/.bin/node-sass --version
node-sass 3.1.2 (Wrapper) [JavaScript]
libsass 3.2.4 (Sass Compiler) [C/C++]
P.S。请注意@at-root
中的3.2.4
。它是bugged。
<强>更新强>
如果它无法解决您的问题,请尝试使用
npm
缓存
npm cache clean
第二次更新
尝试手动安装绑定:
cd node-sass
rm -r vendor
node scripts/install.js --sass-binary-site https://github.com/sass/node-sass/releases/download/
它将输出如下内容:
Binary downloaded and installed at /Users/sobolev/Documents/github/modernizr-mixin/node_modules/node-sass/vendor/darwin-x64-14/binding.node
答案 1 :(得分:1)
您可以尝试以下步骤:
这可以解决您的问题。
答案 2 :(得分:0)
node-sass 3.2.0的最新版本说
这个版本使Libsass陷入3.2.5,带来了一堆 修复。
npm install node-sass
现在将安装一个带有libsass&gt; = 3.2.5的node-sass。