@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.
74 lines (56 loc) • 2.38 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); // Copy types
if (_fs.default.existsSync(_3)) {
const isDirectory = source => _fs.default.lstatSync(_path.default.join(_3, source)).isDirectory();
const getDirectories = source => _fs.default.readdirSync(source).filter(isDirectory);
getDirectories(_3).forEach(dir => {
// If dir not exists in mhy
if (!_fs.default.existsSync(_path.default.resolve(globalTypesPath, dir))) {
_copyDir.default.sync(_path.default.resolve(_3, dir), _path.default.resolve(globalTypesPath, dir));
}
});
}
const tsconfig = module.exports = module.exports.default = (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,
typeRoots: [globalTypesPath],
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')]
}); // Generate fresh tsconfig.json on each run
require('../_utils/tsconfig')(process.cwd(), tsconfig);