web-dev-qa-db-ja.com

npmでLibsassをアップグレードするにはどうすればよいですか?

私は現在NPMのnode-sassツールを実行していますが、実行しているlibsassのバージョンは3.2.2であり、実行する必要があるバージョンは3.2.4です。これにより、現在のフレームワークの1つで重大なバグが修正されます。を使用します。

enter image description here

要件を満たすためにnode-sassまたはlibsassをビルドおよび/または更新する方法に関する情報が見つかりません。私はすでに最新バージョンのnode-sass、3.1.2を実行しています。

それでも、私のノード-sass package.jsonは、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();
13

以下の手順を試すことができますか?

  1. git clone https://github.com/sass/node-sass.git
  2. cdノード-sass
  3. gitチェックアウトタグ/v3.1.2
  4. npminstall。 -g
  5. node-sass -v

これで問題が解決するはずです。

1
saquib khan

そのための特別なコマンドはありません。 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ソースフォルダ のみです。クリーンなビルドを試すことができます。 node-sassを削除して、再度インストールします。

npm install [email protected]
...
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-root3.2.4には注意してください。 バグ です。

更新
問題が解決しない場合は、すべてのnpmキャッシュを削除してみてください

npm cache clean

2回目の更新
バインディングを手動でインストールしてみてください:

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
sobolevn

Node-sass3.2.0の最新リリースによると

このリリースでは、Libsassが3.2.5に引き上げられ、多数の修正が加えられています。

npm install node-sassは、libsass> = 3.2.5のnode-sassをインストールします。

0
Alex Taylor