我如何用npm升级Libsass?

我目前正在运行NPM的node-sass工具,但是它运行的libsass版本是3.2.2,我需要运行的版本是3.2.4,因为这修复了一个框架中的重要bug使用。

在这里输入图像描述

我找不到有关如何构build和/或更新node-sass或libsass以满足我的要求的信息。 我已经在运行最新版本的节点sass 3.1.2。

然而,我的node-sass package.json似乎有一个key:value对,表明libsass是3.2.4,但这显然是不正确的。

升级我的libsass版本最简单的方法是什么?

更新

6月6日

我已经做了一些额外的search,仍然不能让libsass在3.2.4的版本。 我试过升级一个旧的节点sass包,并检查我的环境variables的覆盖。 没有解决scheme呢。

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 

我不知道这是什么意思。 看看第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(); 

对此没有特别的指示。 看看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只是一个源文件夹 。 你可以尝试做一个干净的构build。 删除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++] 

PS 3.2.4 @at-root要小心。 它被窃听 。

更新
如果它不能解决你的问题,尝试删除所有的npmcaching

 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. git clone https://github.com/sass/node-sass.git
  2. cd节点sass
  3. git checkout tags / v3.1.2
  4. npm安装。 -G
  5. node-sass -v

这应该解决您的问题。

最新版本的节点sass 3.2.0说

这个版本将Libsass碰到了3.2.5,这带来了一些修复。

npm install node-sass将会安装一个libsass> = 3.2.5的node-sass。