Commit b5e48fae by Иван Кубота

load files with missed extensions

parent f9e7d587
......@@ -114,19 +114,21 @@ var transformTSX = function(code, fileName, cb) {
};*/
//transformTSX('', 'aga', ()=>{})
var sass = require('node-sass');
var transformServe = function(dir) {
return function (req, res, next) {
var transformServe = function(dir, anything) {
let fixedUrl;
let serve = function (req, res, next) {
if (req.url in cache) {
return res.end(cache[req.url])
}
/*if (req.url.substr(-8) === '.jsx.map') {
debugger
}*/
if (req.url.substr(-5) === '.scss'){
if(!anything){
fixedUrl = req.url;
}
if (fixedUrl.substr(-5) === '.scss'){
// not secure
//console.log('scss', dir, req.url, __dirname)
fs.readFile( path.join( __dirname, dir, req.url ), function( err, data ){
fs.readFile( path.join( __dirname, dir, fixedUrl ), function( err, data ){
if( err ){
next();
}else{
......@@ -139,18 +141,37 @@ var transformServe = function(dir) {
file: path.join( __dirname, dir, req.url ),
sourceMap: true,
importer: function( url, prev, done ){
setTimeout( function( result ){
if(url[0] === '/'){
url = path.join( __dirname, dir, url.substr(1));
}
var displayName = path.relative( path.join( __dirname, dir ), path.resolve( path.dirname( prev ), url ) )
var name = path.resolve( path.dirname( prev ), url );
// TODO Add errors
if(url[0] === '/'){
url = path.join( __dirname, dir, url.substr(1));
}
var displayName = path.relative( path.join( __dirname, dir ), path.resolve( path.dirname( prev ), url ) )
var name = path.resolve( path.dirname( prev ), url );
let fName;
let thisOne = function(name, data) {
done( {
file: displayName, // only one of them is required, see section Special Behaviours.
contents: fs.readFileSync( name ) + ''
contents: data
} );
}, 10 );
};
fs.readFile(fName = name, function(err, res) {
if(err){
fs.readFile(fName = name+'.scss', function(err, res) {
if(err){
fs.readFile(fName = name+'.css', function(err, res) {
if(err){
done( false);
//throw new Error('what the fuck');
}else{ thisOne(fName, res+'') }
})
}else{ thisOne(fName, res+'') }
})
}else{ thisOne(fName, res+'') }
})
}
}, function( err, result ){
if( err ){
......@@ -162,9 +183,9 @@ var transformServe = function(dir) {
} );
}
} );
}else if (req.url.substr(-4) === '.jsx') {
}else if (fixedUrl.substr(-4) === '.jsx') {
fs.readFile(path.join(dir, req.url), function(err, data){
fs.readFile(path.join(dir, fixedUrl), function(err, data){
if( err ){
next();
}else{
......@@ -202,9 +223,9 @@ var transformServe = function(dir) {
})
}
});
}*/else if (req.url.substr(-4) === '.svg') {
}*/else if (fixedUrl.substr(-4) === '.svg') {
console.log('Serve svg', dir, req.url)
fs.readFile(path.join(dir, req.url), function(err, data){
fs.readFile(path.join(dir, fixedUrl), function(err, data){
if( err ){
next();
}else{
......@@ -243,7 +264,27 @@ var transformServe = function(dir) {
} else {
next();
}
}
};
if(!anything)
return function(req, res, next) {
return serve(req, res, next);
};
let types = 'scss,jsx,svg'.split(',')
let test = 0;
let iterate = function(req, res, next) {
fixedUrl = req.url+'.'+types[test];
serve(req, res, function() {
if(test<types.length){
test++;
iterate(req, res, next);
}else{
next();
test = 0;
}
});
};
return iterate;
};
......@@ -273,6 +314,7 @@ app.use(App.static(dir(pack.public)));
app.use(App.static(dir(pack.src)))
app.use(transformServe('src', true));
......
......@@ -74,6 +74,7 @@
var skip = false;
console.log(dep)
if( !( dep in definitions ) ){
var matched = false;
for( var j = 0, _j = InstantLoaders.length; j < _j; j++ ){
const instantLoader = InstantLoaders[ j ];
if( dep.substr( -instantLoader.name.length ).toLowerCase() === instantLoader.name ){
......@@ -84,10 +85,22 @@
}else{
definitions[ dep ].loading = true;
}
matched = true;
}
break;
}
}
if(!matched){
if( !( dep in definitions ) ){
definitions[ dep ] = { exports: {} };
if( jsLoader( dep ) ){
skip = true;
}else{
definitions[ dep ].loading = true;
}
matched = true;
}
}
}else{
skip = definitions[ dep ].notResolved === 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment