node.js - script - node-sass
¿Cómo puedo actualizar Libsass con npm? (3)
No hay un comando especial para eso. Eche un vistazo al archivo lib/extensions.js
. Tiene varias líneas interesantes:
/**
* 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
en este caso es solo una carpeta de origen . Puedes intentar hacer una construcción limpia. Elimina node-sass
e instálalo de nuevo.
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++]
Al actualizar:
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++]
PD Tenga cuidado con @at-root
en 3.2.4
. Está escuchado
Actualizar
Si no resuelve su problema, intente eliminar todo el caché npm
con
npm cache clean
Segunda actualización
Intenta instalar manualmente el enlace:
cd node-sass
rm -r vendor
node scripts/install.js --sass-binary-site https://github.com/sass/node-sass/releases/download/
Saldrá algo así como:
Binary downloaded and installed at /Users/sobolev/Documents/github/modernizr-mixin/node_modules/node-sass/vendor/darwin-x64-14/binding.node
Actualmente estoy ejecutando la herramienta node-sass de NPM, pero la versión de libsass que está ejecutando es 3.2.2, y la versión que necesito ejecutar es 3.2.4, ya que esto soluciona un error crucial en uno de los marcos que estoy utilizando.
No puedo encontrar información sobre cómo crear y / o actualizar node-sass o libsass para cumplir con mis requisitos. Ya estoy ejecutando la última versión de node-sass, 3.1.2.
Sin embargo, mi node-sass package.json
parece tener un par clave: valor que indica que libsass está en 3.2.4, aunque esto claramente no es correcto.
¿Cuál es la forma más fácil de actualizar mi versión de libsass?
Actualizaciones
6 de junio
He hecho algunas búsquedas adicionales, y todavía no puedo conseguir que libsass esté en una versión de 3.2.4. Intenté actualizar un paquete anterior de node-sass y verificando las variables de entorno para las anulaciones. No hay solución todavía
7 de junio
Parece que la versión de Libsass que es obtenida por node-sass es 3.2.4, sin embargo, no se está recogiendo, y está por defecto en un binarypath de binarypath
:
path.join(__dirname, ''..'', ''vendor'', sass.binaryName.replace(/_/, ''/''));
que en mi máquina produce:
H:/myproj/node_modules/gulp-sass/node_modules/node-sass/vendor/win32-x64-14/binding.node
No tengo idea de lo que esto significa. Eche un vistazo a node-sass/lib/extensions.js
en la línea 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();
La última versión de node-sass 3.2.0 dice
Esta versión topa con Libsass en 3.2.5, lo que trae consigo un montón de soluciones.
npm install node-sass
se instalará ahora instala un node-sass con un libsass> = 3.2.5.
Puedes probar los siguientes pasos:
- git clone https://github.com/sass/node-sass.git
- cd node-sass
- git checkout tags / v3.1.2
- npm instalar. -gramo
- nodo-sass -v
Esto debería solucionar tu problema.