UNPKG

lilacs

Version:

A web frontend building tool for teamwork, with automaticly compiling, merging, minifying, syncing files to server, supporting distributed servers, ensuring css or html files' inline reference with correct absolute path, and more.

71 lines (57 loc) 1.84 kB
const fs = require('fs'); const path = require('path'); const pathUtil = require('./path'); const getFilePathFromPackage = require('./get_file_path_from_package'); const fileUtil = require('../util/file'); let response = (res, realFilePath, isJs) => { let fileStat = fs.statSync(realFilePath); res.writeHead(200, { 'Content-Type': isJs ? 'application/javascript' : 'text/css', 'Content-Length': fileStat.size }); let readStream = fs.createReadStream(realFilePath); readStream.pipe(res); }; module.exports = (req, res, next) => { let filePath = req.url.split('?')[0]; // only do to js/css file if (filePath.slice(-3) !== '.js' && filePath.slice(-4) !== '.css') { next(); return; } const projectConfig = require('../project_config'); // file exist in projectConfig.basePaths.webRoot if (fileUtil.fileExist(path.join(projectConfig.basePaths.webRoot, filePath))) { next(); return; } let isJs = !1; let pureFilePath = ''; // js if (filePath.slice(-3) === '.js') { isJs = !0; pureFilePath = filePath.slice(0, -3); } // css else { isJs = !1; pureFilePath = filePath.slice(0, -4); } // not exist if (!pureFilePath) { next(); return; } // do not exist requireJsConfig if (isJs && !projectConfig.requireJsConfig || !isJs && !projectConfig.inCssConfig) { next(); return; } // not exist, try node_modules let module = pathUtil.replaceBackSlash(path.relative( isJs ? projectConfig.requireJsConfig.baseUrl : projectConfig.inCssConfig.baseUrl, pureFilePath )); let realFilePath = getFilePathFromPackage(module, isJs); if (realFilePath) response(res, realFilePath, isJs); else next(); };