首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用npm升级Libsass?

如何用npm升级Libsass?
EN

Stack Overflow用户
提问于 2015-06-06 10:23:05
回答 3查看 13.7K关注 0票数 14

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

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

然而,我的节点-sass package.json似乎有一个键:值对,它指示libsass为3.2.4,但这显然是不正确的。

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

更新

6月6日

我做了一些额外的搜索,仍然无法使libsass达到3.2.4的版本。我已经尝试过升级一个较旧的节点-sass包,并检查我的环境变量是否覆盖。还没有解决办法。

6月7日

确实,由节点sass提供的Libsass版本似乎是3.2.4,但它没有被选中,并且默认为Libass binarypath

代码语言:javascript
复制
path.join(__dirname, '..', 'vendor', sass.binaryName.replace(/_/, '/'));

在我的机器上产生:

代码语言:javascript
复制
H:\myproj\node_modules\gulp-sass\node_modules\node-sass\vendor\win32-x64-14\binding.node

我不知道这意味着什么。请看第134行的node-sass\lib\extensions.js

代码语言:javascript
复制
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();
EN

回答 3

Stack Overflow用户

发布于 2015-06-06 18:41:50

这方面没有特别的命令。查看一下lib/extensions.js文件。它有几条无止境的线条:

代码语言:javascript
复制
/**
 * 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只是一个源文件夹。你可以试着做一个干净的建筑。删除node-sass并重新安装它。

代码语言:javascript
复制
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++]  

更新时:

代码语言:javascript
复制
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++] 

小心@at-root3.2.4。是窃听

更新

如果它不能解决您的问题,请尝试删除所有npm缓存

代码语言:javascript
复制
npm cache clean

第二次更新

尝试手动安装绑定:

代码语言:javascript
复制
cd node-sass
rm -r vendor
node scripts/install.js --sass-binary-site https://github.com/sass/node-sass/releases/download/

它将输出类似于:

代码语言:javascript
复制
Binary downloaded and installed at /Users/sobolev/Documents/github/modernizr-mixin/node_modules/node-sass/vendor/darwin-x64-14/binding.node
票数 1
EN

Stack Overflow用户

发布于 2015-06-12 17:59:42

你能试试下面的步骤吗?

  1. git克隆https://github.com/sass/node-sass.git
  2. cd节点-sass
  3. git签出标签/v3.1.2
  4. npm安装。-g
  5. 节点-sass -v

这应该能解决你的问题。

票数 1
EN

Stack Overflow用户

发布于 2015-06-12 02:17:17

node 3.2.0的最新版本说

这个版本将Libsass提高到3.2.5,这带来了大量的修复。

npm install node-sass现在将安装一个带有libsass >= 3.2.5的节点-sass。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30681658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档