UNPKG

brain-cli

Version:

A command line tool used to run projects

131 lines (130 loc) 4.87 kB
(function (factory) { if (typeof module === "object" && typeof module.exports === "object") { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === "function" && define.amd) { define(["require", "exports", "../settings/EConfig", "../utils/env", "path"], factory); } })(function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getJSXLoadersed = exports.getTsLoadersed = exports.tsloaderPlugin = void 0; const EConfig_1 = require("../settings/EConfig"); const env_1 = require("../utils/env"); const path = require("path"); const { webpack: { happyPack, disableReactHotLoader, tsCompilePlugin, extend }, babel, } = EConfig_1.default.getInstance(); const __DEV__ = env_1.isDev(); const DisableReactHotLoader = disableReactHotLoader || false; //默认启用热加载 const nodeModulesPath = path.resolve(process.cwd(), 'node_modules'); function hasWebpackExtend() { if (extend && typeof extend === 'function') { return true; } return false; } const tsloaderPlugin = () => { let tsCompileOption = {}; if (tsCompilePlugin && tsCompilePlugin.option) { tsCompileOption = tsCompilePlugin.option; } return { loader: require.resolve('ts-loader'), options: Object.assign({ // disable type checker - we will use it in fork plugin transpileOnly: true, happyPackMode: true, }, (tsCompileOption || {})), }; }; exports.tsloaderPlugin = tsloaderPlugin; const getTsLoadersed = (include = []) => { const loaders = []; if (happyPack && happyPack.open) { loaders.push({ test: /\.(ts|tsx)$/, include: [path.join(process.cwd(), './src')].concat(include), loader: 'happypack/loader?id=ts', // exclude: [nodeModulesPath], }); } else { // 解决多线程下ts-loader 编译插件无法被执行问题 loaders.push({ test: /\.(ts|tsx)$/, include: [path.join(process.cwd(), './src')].concat(include), use: [ { loader: 'babel-loader', query: babel.query, }, exports.tsloaderPlugin(), ], // exclude: [nodeModulesPath], }); } if (hasWebpackExtend()) { extend(loaders, { isDev: __DEV__, type: 'ts_loader', }); } return loaders; }; exports.getTsLoadersed = getTsLoadersed; const getJSXLoadersed = (include = []) => { const loaders = []; const hotLoader = []; if (__DEV__) { if (!DisableReactHotLoader) { hotLoader.push({ test: /\.(jsx|js)?$/, // loader: 'react-hot', loader: 'babel-loader', include: [path.join(process.cwd(), './src')].concat(include), exclude: [nodeModulesPath], options: { // This is a feature of `babel-loader` for webpack (not Babel itself). // It enables caching results in ./node_modules/.cache/babel-loader/ // directory for faster rebuilds. cacheDirectory: true, plugins: ['react-hot-loader/babel'], }, }); if (hasWebpackExtend()) { extend(hotLoader, { isDev: __DEV__, type: 'hot_loader', }); } } } if (happyPack && happyPack.open) { loaders.push({ test: /\.(jsx|js)?$/, include: [path.join(process.cwd(), './src')].concat(include), loader: 'happypack/loader?id=js', }); } else { loaders.push({ test: /\.(jsx|js)?$/, include: [path.join(process.cwd(), './src')].concat(include), use: [ { loader: `babel-loader`, query: babel.query, }, ], }); } if (hasWebpackExtend()) { extend(loaders, { isDev: __DEV__, type: 'js_loader', }); } return [...hotLoader, ...loaders]; }; exports.getJSXLoadersed = getJSXLoadersed; });