lambda-service
Version:
136 lines (113 loc) • 6.12 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = _default;
var _lambdaWebpack = require("lambda-webpack");
var _umiUtils = require("umi-utils");
var _path = require("path");
var _reactDevUtils = require("lambda-webpack/react-dev-utils");
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
const plugins = (0, _lambdaWebpack.getUserConfigPlugins)();
function noop() {
return true;
}
const excludes = ['entry', 'outputPath'];
function _default(api) {
const debug = api.debug,
cwd = api.cwd,
config = api.config,
paths = api.paths; // 把 af-webpack 的配置插件转化为 umi-build-dev 的
api._registerConfig(() => {
return plugins.filter(p => !excludes.includes(p.name)).map(({
name,
validate = noop
}) => {
return api => ({
name,
validate,
onChange(newConfig) {
try {
debug(`Config ${name} changed to ${JSON.stringify(newConfig[name])}`);
} catch (e) {} // eslint-disable-line no-empty
if (name === 'proxy') {
global.g_umi_reloadProxy(newConfig[name]);
} else {
api.service.restart(`${name} changed`);
}
}
});
});
});
const reactDir = (0, _umiUtils.compatDirname)('react/package.json', cwd, (0, _path.dirname)(require.resolve('react/package.json')));
const reactDOMDir = (0, _umiUtils.compatDirname)('react-dom/package.json', cwd, (0, _path.dirname)(require.resolve('react-dom/package.json')));
const reactRouterDir = (0, _path.dirname)(require.resolve('react-router/package.json'));
const reactRouterDOMDir = (0, _path.dirname)(require.resolve('react-router-dom/package.json'));
const reactRouterConfigDir = (0, _path.dirname)(require.resolve('react-router-config/package.json'));
api.chainWebpackConfig(webpackConfig => {
webpackConfig.resolve.alias.set('react', reactDir).set('react-dom', reactDOMDir).set('react-router', reactRouterDir).set('react-router-dom', reactRouterDOMDir).set('react-router-config', reactRouterConfigDir).set('@', paths.absSrcPath).set('@tmp', paths.absTmpDirPath);
});
/* eslint-disable import/no-dynamic-require */
api.addVersionInfo([`react@${require((0, _path.join)(reactDir, 'package.json')).version} (${reactDir})`, `react-dom@${require((0, _path.join)(reactDOMDir, 'package.json')).version} (${reactDOMDir})`, `react-router@${require((0, _path.join)(reactRouterDir, 'package.json')).version} (${reactRouterDir})`, `react-router-dom@${require((0, _path.join)(reactRouterDOMDir, 'package.json')).version} (${reactRouterDOMDir})`, `react-router-config@${require((0, _path.join)(reactRouterConfigDir, 'package.json')).version} (${reactRouterConfigDir})`]);
/* eslint-enable import/no-dynamic-require */
api.modifyAFWebpackOpts((memo, args = {}) => {
const ssr = args.ssr;
const isDev = process.env.NODE_ENV === 'development';
const entryScript = paths.absLibraryJSPath;
const setPublicPathFile = (0, _path.join)(__dirname, '../../../template/setPublicPath.js');
const setPublicPath = config.runtimePublicPath || config.exportStatic && config.exportStatic.dynamicRoot;
const entry = isDev ? {
umi: [...(process.env.HMR === 'none' || ssr ? [] : [_reactDevUtils.webpackHotDevClientPath]), ...(setPublicPath ? [setPublicPathFile] : []), entryScript]
} : {
umi: [...(setPublicPath ? [setPublicPathFile] : []), entryScript]
};
const targets = ssr ? // current running node
{
node: true
} : _objectSpread({
chrome: 49,
firefox: 64,
safari: 10,
edge: 13,
ios: 10
}, config.targets || {}); // Transform targets to browserslist for autoprefixer
const browserslist = config.browserslist || targets.browsers || Object.keys(targets).filter(key => {
return !['node', 'esmodules'].includes(key);
}).map(key => {
return `${key} >= ${targets[key]}`;
});
const plugins = [];
if (process.env.BABEL_POLYFILL !== 'none') {
plugins.push(require.resolve('./lockCoreJSVersionPlugin'));
}
return _objectSpread({}, memo, {}, config, {
cwd,
browserslist,
entry,
absNodeModulesPath: paths.absNodeModulesPath,
outputPath: paths.absOutputPath,
disableDynamicImport: true,
babel: config.babel || {
presets: [[require.resolve('babel-preset-umi'), {
targets,
env: ssr ? {} : _objectSpread({
useBuiltIns: 'entry',
corejs: 2
}, config.treeShaking ? {
modules: false
} : {})
}]],
plugins
},
define: _objectSpread({
'process.env.BASE_URL': config.base || '/',
__IS_BROWSER: !ssr,
__UMI_BIGFISH_COMPAT: process.env.BIGFISH_COMPAT,
__UMI_HTML_SUFFIX: !!(config.exportStatic && typeof config.exportStatic === 'object' && config.exportStatic.htmlSuffix)
}, config.define || {}),
publicPath: isDev && !config.ssr ? '/' : config.publicPath != null ? config.publicPath : '/'
});
});
}
;