86 lines
2.4 KiB
JavaScript
Executable File
86 lines
2.4 KiB
JavaScript
Executable File
/*! sass.js - v0.10.13 (7209593) - built 2018-11-19
|
|
providing libsass 3.5.5 (39e30874)
|
|
via emscripten 1.38.18 (7a0e274)
|
|
*/
|
|
var Sass = require('./sass.lib.js')
|
|
var fs = require('fs')
|
|
var path = require('path')
|
|
|
|
function fileExists(path) {
|
|
var stat = fs.statSync(path)
|
|
return stat && stat.isFile()
|
|
}
|
|
|
|
function removeFileExtension(path) {
|
|
return path.slice(0, path.lastIndexOf('.'))
|
|
}
|
|
|
|
function importFileToSass(path, done) {
|
|
// any path must be relative to CWD to work in both environments (real FS, and emscripten FS)
|
|
var requestedPath = './' + path
|
|
// figure out the *actual* path of the file
|
|
var filesystemPath = Sass.findPathVariation(fileExists, requestedPath)
|
|
if (!filesystemPath) {
|
|
done({
|
|
error: 'File "' + requestedPath + '" not found'
|
|
})
|
|
|
|
return
|
|
}
|
|
|
|
// Make sure to omit the ".css" file extension when it was omitted in requestedPath.
|
|
// This allow raw css imports.
|
|
// see https://github.com/sass/libsass/pull/754
|
|
var isRawCss =
|
|
!requestedPath.endsWith('.css') && filesystemPath.endsWith('.css')
|
|
var targetPath = isRawCss
|
|
? removeFileExtension(filesystemPath)
|
|
: filesystemPath
|
|
|
|
// write the file to emscripten FS so libsass internal FS handling
|
|
// can engage the scss/sass switch, which apparently does not happen
|
|
// for content provided through the importer callback directly
|
|
var content = fs.readFileSync(filesystemPath, { encoding: 'utf8' })
|
|
Sass.writeFile(filesystemPath, content, function() {
|
|
done({
|
|
path: targetPath
|
|
})
|
|
})
|
|
}
|
|
|
|
function importerCallback(request, done) {
|
|
importFileToSass(resolve(request), done)
|
|
}
|
|
|
|
function compileFile(path, options, callback) {
|
|
if (!callback) {
|
|
callback = options
|
|
options = {}
|
|
}
|
|
|
|
Sass.importer(importerCallback)
|
|
importFileToSass(path, function() {
|
|
Sass.compileFile(path, options, callback)
|
|
})
|
|
}
|
|
|
|
function resolve(request) {
|
|
// the request will not have the correct "resolved" path on Windows
|
|
// see https://github.com/medialize/sass.js/issues/69
|
|
// see https://github.com/medialize/sass.js/issues/86
|
|
return path
|
|
.normalize(
|
|
path.join(
|
|
// sass.js works in the "/sass/" directory, make that relative to CWD
|
|
path.dirname(request.previous.replace(/^\/sass\//, '')),
|
|
request.current
|
|
)
|
|
)
|
|
.replace(/\\/g, '/')
|
|
}
|
|
|
|
compileFile.importFileToSass = importFileToSass
|
|
compileFile.Sass = Sass
|
|
|
|
module.exports = compileFile
|
JavaScript
98.5%
SCSS
1.5%