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.
52 lines (40 loc) • 1.49 kB
JavaScript
const fs = require('fs');
const path = require('path');
const vars = require('../data/vars');
const fileUtil = require('../util/file');
module.exports = (module, isJs) => {
let fileSuffix = isJs ? '.js' : '.css';
let nodeModulesDir = vars.projectRoot + '/node_modules/';
// bootstrap/dist/js/bootstrap.js, bootstrap/dist/css/bootstrap.css
let directTryFilePath = nodeModulesDir + module + fileSuffix;
if (fileUtil.fileExist(directTryFilePath)) {
return directTryFilePath;
}
// jquery, @company/package
let libraryDir = nodeModulesDir + module;
let packageFilePath = nodeModulesDir + module + '/package.json';
// not exist
if (!fileUtil.fileExist(packageFilePath)) {
return null;
}
let packageJson = require(packageFilePath);
let mainFile = packageJson['amd:main'] || packageJson['umd:main'] || packageJson.main;
// jquery, no main field
if (!mainFile) {
return null;
}
// main: 'dist/demo', main: 'dist/demo.js', main: 'dist/demo.css', main: './dist/demo.js'
let libraryMainFile = '';
if (isJs) {
libraryMainFile = mainFile.slice(-3) === '.js' ? mainFile : mainFile + '.js';
}
else {
libraryMainFile = mainFile.slice(-4) === '.css' ? mainFile : mainFile + '.css';
}
let realFilePath = path.join(libraryDir, libraryMainFile);
// not exist
if (!fileUtil.fileExist(realFilePath)) {
return null;
}
return realFilePath;
};