Подтвердить что ты не робот

Как обновить Libsass с помощью npm?

В настоящее время я запускаю инструмент NPM node -sass, но версия libsass работает 3,2,2, а версия, которую мне нужно запустить, - 3.2.4, так как это исправляет критическую ошибку в одном которые я использую.

enter image description here

Я не могу найти информацию о том, как создавать и/или обновлять либо node -sass, либо libsass для удовлетворения моих требований. Я уже использую последнюю версию node -sass, 3.1.2.

Тем не менее, у моего node -sass package.json есть пара ключ: значение, которая указывает, что libsass находится в 3.2.4, но это явно неверно.

Какой самый простой способ обновить мою версию libsass?

Обновления

6 июня

Я сделал дополнительный поиск и до сих пор не могу заставить libsass быть в версии 3.2.4. Я попытался обновить старый пакет node -sass и проверить переменные среды для переопределений. Пока нет решения.

7 июня

Похоже, что версия Libsass, полученная с помощью node -sass, равна 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();
4b9b3361

Ответ 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 в этом случае является только исходной папкой. Вы можете попытаться сделать чистую сборку. Удалите 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. Это 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

Ответ 2

Можете ли вы попробовать выполнить следующие шаги:

Это должно решить вашу проблему.

Ответ 3

В последней версии node -sass 3.2.0 говорится

Этот релиз ударяет Libsass до 3.2.5, который приносит с собой кучу исправления.

npm install node-sass будет установлена ​​установка node -sass с libsass >= 3.2.5.