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

load files with missed extensions

parent f9e7d587
...@@ -114,19 +114,21 @@ var transformTSX = function(code, fileName, cb) { ...@@ -114,19 +114,21 @@ var transformTSX = function(code, fileName, cb) {
};*/ };*/
//transformTSX('', 'aga', ()=>{}) //transformTSX('', 'aga', ()=>{})
var sass = require('node-sass'); var sass = require('node-sass');
var transformServe = function(dir) { var transformServe = function(dir, anything) {
return function (req, res, next) { let fixedUrl;
let serve = function (req, res, next) {
if (req.url in cache) { if (req.url in cache) {
return res.end(cache[req.url]) 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 // not secure
//console.log('scss', dir, req.url, __dirname) //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 ){ if( err ){
next(); next();
}else{ }else{
...@@ -139,18 +141,37 @@ var transformServe = function(dir) { ...@@ -139,18 +141,37 @@ var transformServe = function(dir) {
file: path.join( __dirname, dir, req.url ), file: path.join( __dirname, dir, req.url ),
sourceMap: true, sourceMap: true,
importer: function( url, prev, done ){ importer: function( url, prev, done ){
setTimeout( function( result ){
if(url[0] === '/'){ if(url[0] === '/'){
url = path.join( __dirname, dir, url.substr(1)); url = path.join( __dirname, dir, url.substr(1));
} }
var displayName = path.relative( path.join( __dirname, dir ), path.resolve( path.dirname( prev ), url ) ) var displayName = path.relative( path.join( __dirname, dir ), path.resolve( path.dirname( prev ), url ) )
var name = path.resolve( path.dirname( prev ), url ); var name = path.resolve( path.dirname( prev ), url );
// TODO Add errors
let fName;
let thisOne = function(name, data) {
done( { done( {
file: displayName, // only one of them is required, see section Special Behaviours. 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 ){ }, function( err, result ){
if( err ){ if( err ){
...@@ -162,9 +183,9 @@ var transformServe = function(dir) { ...@@ -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 ){ if( err ){
next(); next();
}else{ }else{
...@@ -202,9 +223,9 @@ var transformServe = function(dir) { ...@@ -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) 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 ){ if( err ){
next(); next();
}else{ }else{
...@@ -243,7 +264,27 @@ var transformServe = function(dir) { ...@@ -243,7 +264,27 @@ var transformServe = function(dir) {
} else { } else {
next(); 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))); ...@@ -273,6 +314,7 @@ app.use(App.static(dir(pack.public)));
app.use(App.static(dir(pack.src))) app.use(App.static(dir(pack.src)))
app.use(transformServe('src', true));
......
...@@ -74,6 +74,7 @@ ...@@ -74,6 +74,7 @@
var skip = false; var skip = false;
console.log(dep) console.log(dep)
if( !( dep in definitions ) ){ if( !( dep in definitions ) ){
var matched = false;
for( var j = 0, _j = InstantLoaders.length; j < _j; j++ ){ for( var j = 0, _j = InstantLoaders.length; j < _j; j++ ){
const instantLoader = InstantLoaders[ j ]; const instantLoader = InstantLoaders[ j ];
if( dep.substr( -instantLoader.name.length ).toLowerCase() === instantLoader.name ){ if( dep.substr( -instantLoader.name.length ).toLowerCase() === instantLoader.name ){
...@@ -84,10 +85,22 @@ ...@@ -84,10 +85,22 @@
}else{ }else{
definitions[ dep ].loading = true; definitions[ dep ].loading = true;
} }
matched = true;
} }
break; break;
} }
} }
if(!matched){
if( !( dep in definitions ) ){
definitions[ dep ] = { exports: {} };
if( jsLoader( dep ) ){
skip = true;
}else{
definitions[ dep ].loading = true;
}
matched = true;
}
}
}else{ }else{
skip = definitions[ dep ].notResolved === 0; 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