$
This commit is contained in:
121
node_modules/node-sass/scripts/install.js
generated
vendored
Normal file
121
node_modules/node-sass/scripts/install.js
generated
vendored
Normal file
@@ -0,0 +1,121 @@
|
||||
/*!
|
||||
* node-sass: scripts/install.js
|
||||
*/
|
||||
|
||||
var fs = require('fs'),
|
||||
eol = require('os').EOL,
|
||||
path = require('path'),
|
||||
fetch = require('make-fetch-happen'),
|
||||
sass = require('../lib/extensions'),
|
||||
downloadOptions = require('./util/downloadoptions');
|
||||
|
||||
/**
|
||||
* Download file, if succeeds save, if not delete
|
||||
*
|
||||
* @param {String} url
|
||||
* @param {String} dest
|
||||
* @param {Function} cb
|
||||
* @api private
|
||||
*/
|
||||
|
||||
function download(url, dest, cb) {
|
||||
var reportError = function(err) {
|
||||
cb(['Cannot download "', url, '": ', eol, eol,
|
||||
typeof err.message === 'string' ? err.message : err, eol, eol,
|
||||
'Hint: If github.com is not accessible in your location', eol,
|
||||
' try setting a proxy via HTTP_PROXY, e.g. ', eol, eol,
|
||||
' export HTTP_PROXY=http://example.com:1234',eol, eol,
|
||||
'or configure npm proxy via', eol, eol,
|
||||
' npm config set proxy http://example.com:8080'].join(''));
|
||||
};
|
||||
|
||||
var successful = function(response) {
|
||||
return response.status >= 200 && response.status < 300;
|
||||
};
|
||||
|
||||
console.log('Downloading binary from', url);
|
||||
|
||||
try {
|
||||
fetch(url, downloadOptions()).then(function (response) {
|
||||
return response.buffer();
|
||||
}).then(function (buffer) {
|
||||
fs.createWriteStream(dest).on('error', cb).end(buffer, cb);
|
||||
console.log('Download complete');
|
||||
}).catch(function(err) {
|
||||
if(!successful(err)) {
|
||||
reportError(['HTTP error', err.code, err.message].join(' '));
|
||||
} else {
|
||||
reportError(err);
|
||||
}
|
||||
});
|
||||
} catch (err) {
|
||||
cb(err);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check and download binary
|
||||
*
|
||||
* @api private
|
||||
*/
|
||||
|
||||
function checkAndDownloadBinary() {
|
||||
if (process.env.SKIP_SASS_BINARY_DOWNLOAD_FOR_CI) {
|
||||
console.log('Skipping downloading binaries on CI builds');
|
||||
return;
|
||||
}
|
||||
|
||||
var cachedBinary = sass.getCachedBinary(),
|
||||
cachePath = sass.getBinaryCachePath(),
|
||||
binaryPath = sass.getBinaryPath();
|
||||
|
||||
if (sass.hasBinary(binaryPath)) {
|
||||
console.log('node-sass build', 'Binary found at', binaryPath);
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
fs.mkdirSync(path.dirname(binaryPath), {recursive: true});
|
||||
} catch (err) {
|
||||
console.error('Unable to save binary', path.dirname(binaryPath), ':', err);
|
||||
return;
|
||||
}
|
||||
|
||||
if (cachedBinary) {
|
||||
console.log('Cached binary found at', cachedBinary);
|
||||
fs.createReadStream(cachedBinary).pipe(fs.createWriteStream(binaryPath));
|
||||
return;
|
||||
}
|
||||
|
||||
download(sass.getBinaryUrl(), binaryPath, function(err) {
|
||||
if (err) {
|
||||
console.error(err);
|
||||
return;
|
||||
}
|
||||
|
||||
console.log('Binary saved to', binaryPath);
|
||||
|
||||
cachedBinary = path.join(cachePath, sass.getBinaryName());
|
||||
|
||||
if (cachePath) {
|
||||
console.log('Caching binary to', cachedBinary);
|
||||
|
||||
try {
|
||||
fs.mkdirSync(path.dirname(cachedBinary), {recursive: true});
|
||||
fs.createReadStream(binaryPath)
|
||||
.pipe(fs.createWriteStream(cachedBinary))
|
||||
.on('error', function (err) {
|
||||
console.log('Failed to cache binary:', err);
|
||||
});
|
||||
} catch (err) {
|
||||
console.log('Failed to cache binary:', err);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* If binary does not exist, download it
|
||||
*/
|
||||
|
||||
checkAndDownloadBinary();
|
||||
Reference in New Issue
Block a user