@mhy/config
Version:
> This documentation is not complete. It's in progress and it's a BETA version. Use the tool at your own risk.
83 lines (63 loc) • 2.63 kB
JavaScript
;
var _path = _interopRequireDefault(require("path"));
var _globalModules = _interopRequireDefault(require("global-modules"));
var _fs = _interopRequireDefault(require("fs"));
var _ = require("../");
var _copyDir = _interopRequireDefault(require("copy-dir"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const _1 = _path.default.resolve(_globalModules.default, '@mhy/mhy', 'node_modules', '@types');
const _2 = _path.default.resolve('/home/node/.npm-global/lib/node_modules/@mhy/mhy/node_modules/@types');
const _3 = _path.default.resolve(process.cwd(), 'node_modules', '@types');
const globalTypesPath = _fs.default.existsSync(_1) ? _1 : _2; // Get aliases
let aliases;
try {
aliases = require('../webpack').default.resolve.alias;
} catch (e) {
aliases = {};
}
aliases = Object.entries(aliases);
const tsconfig = (0, _.load)('typescript', {
compilerOptions: {
module: 'esNext',
target: 'esnext',
moduleResolution: 'node',
allowJs: false,
emitDeclarationOnly: true,
strict: true,
jsx: 'preserve',
resolveJsonModule: true,
esModuleInterop: true,
noImplicitAny: false,
declaration: true,
baseUrl: _path.default.resolve(process.cwd(), 'src'),
paths: aliases.reduce(function (acc, [k]) {
const folder = k.replace('@', ``);
acc[k] = [`${folder}/index`];
acc[`${k}/*`] = [`${folder}/*`];
return acc;
}, {
'*': [_path.default.resolve(_globalModules.default, '@mhy/mhy', 'node_modules', '*')]
})
},
include: [_path.default.resolve(process.cwd(), 'src/**/*')],
files: [require.resolve('../../typescript/mhy.d.ts')]
}); // Setup @types
// Local exists
if (_fs.default.existsSync(_3)) {
const isDirectory = source => _fs.default.lstatSync(_path.default.join(globalTypesPath, source)).isDirectory();
const getDirectories = source => _fs.default.readdirSync(source).filter(isDirectory);
getDirectories(globalTypesPath).forEach(dir => {
// If dir not exists local
const dirPath = _path.default.resolve(_3, dir);
if (!_fs.default.existsSync(dirPath)) {
_fs.default.mkdirSync(dirPath);
_copyDir.default.sync(_path.default.resolve(globalTypesPath, dir), _path.default.resolve(_3, dir));
}
});
tsconfig.compilerOptions.typeRoots = [_3];
} // Use mhy's if not types in local node_modules/@types yet
else {
tsconfig.compilerOptions.typeRoots = [globalTypesPath];
}
module.exports = module.exports.default = tsconfig; // Generate fresh tsconfig.json on each run
require('../_utils/tsconfig')(process.cwd(), tsconfig);