私は現在NPMのnode-sassツールを実行していますが、実行しているlibsassのバージョンは3.2.2であり、実行する必要があるバージョンは3.2.4です。これにより、現在のフレームワークの1つで重大なバグが修正されます。を使用します。
要件を満たすためにnode-sassまたはlibsassをビルドおよび/または更新する方法に関する情報が見つかりません。私はすでに最新バージョンのnode-sass、3.1.2を実行しています。
それでも、私のノード-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
これが何を意味するのかわかりません。を見てみましょう 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();
以下の手順を試すことができますか?
これで問題が解決するはずです。
そのための特別なコマンドはありません。 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-root
の3.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
Node-sass3.2.0の最新リリースによると
このリリースでは、Libsassが3.2.5に引き上げられ、多数の修正が加えられています。
npm install node-sass
は、libsass> = 3.2.5のnode-sassをインストールします。