web-dev-qa-db-fra.com

Comment puis-je mettre à jour Libsass avec npm?

J'utilise actuellement l'outil node-sass de NPM, mais la version de libsass qu'elle utilise est la version 3.2.2, et la version que j'ai besoin d'exécuter est la version 3.2.4, car cela corrige un bogue crucial dans l'un des frameworks que je suis. en utilisant.

enter image description here

Je ne trouve aucune information sur la manière de construire et/ou de mettre à jour node-sass ou libsass pour répondre à mes besoins. J'utilise déjà la dernière version de node-sass, 3.1.2.

Pourtant, mon node-sass package.json semble avoir une paire clé: valeur qui indique que libsass est à 3.2.4, mais ce n'est clairement pas correct.

Quel est le moyen le plus simple de mettre à jour ma version de libsass?

Mises à jour

6 juin

J'ai fait quelques recherches supplémentaires et n'arrive toujours pas à obtenir libsass avec une version de 3.2.4. J'ai essayé de mettre à jour un ancien paquet de node-sass et de vérifier les variables d'environnement afin de rechercher des remplacements. Aucune solution pour le moment.

7 juin

Il semble que la version de Libsass provenant de node-sass soit 3.2.4, mais elle n’a pas encore été prise en compte, et utilise par défaut Libass binarypath:

path.join(__dirname, '..', 'vendor', sass.binaryName.replace(/_/, '/'));

qui sur ma machine donne:

H:\myproj\node_modules\gulp-sass\node_modules\node-sass\vendor\win32-x64-14\binding.node

Je n'ai aucune idée de ce que cela signifie. Jetez un coup d’œil à node-sass\lib\extensions.js à la ligne 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

Pouvez-vous essayer ci-dessous les étapes:

  1. git clone https://github.com/sass/node-sass.git
  2. cd node-sass
  3. balises de sortie git/v3.1.2
  4. npm installer. -g
  5. node-sass -v

Cela devrait résoudre votre problème.

1
saquib khan

Il n'y a pas de commande spéciale pour cela. Jetez un coup d'œil au fichier lib/extensions.js. Il a plusieurs lignes intéressantes:

/**
 * 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 dans ce cas est seulement un dossier source . Vous pouvez essayer de faire un build propre. Supprimez node-sass et réinstallez-le.

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++]  

Lors de la mise à jour:

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. Soyez prudent avec @at-root dans 3.2.4. C'est bugged .

Mise à jour
Si cela ne résout pas votre problème, essayez de supprimer tout le cache npm avec

npm cache clean

Deuxième mise à jour
Essayez d’installer manuellement la reliure:

cd node-sass
rm -r vendor
node scripts/install.js --sass-binary-site https://github.com/sass/node-sass/releases/download/

Cela produira quelque chose comme:

Binary downloaded and installed at /Users/sobolev/Documents/github/modernizr-mixin/node_modules/node-sass/vendor/darwin-x64-14/binding.node
1
sobolevn

La dernière version de node-sass 3.2.0 dit

Cette version oblige Libsass à 3.2.5, ce qui apporte de nombreuses corrections.

npm install node-sass va installer maintenant installer un noeud-sass avec un libsass> = 3.2.5.

0
Alex Taylor