94 lines
2.5 KiB
JavaScript
94 lines
2.5 KiB
JavaScript
|
||
const { resolve } = require('path');
|
||
const watchFolders = [
|
||
'../src', '../node_modules', '../../oak-domain', '../../oak-common-aspect', '../../oak-external-sdk',
|
||
'../../oak-frontend-base', '../../oak-general-business', '../../oak-memory-tree-store'
|
||
];
|
||
|
||
let moduleFileExtensions = ['js', 'ts', 'jsx', 'tsx', 'less', 'json', 'svg'];
|
||
|
||
if (process.env.OAK_DEV_MODE === 'frontend') {
|
||
moduleFileExtensions = [
|
||
'frontend.js',
|
||
'frontend.ts',
|
||
'frontend.tsx',
|
||
'frontend.jsx',
|
||
].concat(moduleFileExtensions);
|
||
} else {
|
||
moduleFileExtensions = [
|
||
'server.js',
|
||
'server.ts',
|
||
'server.tsx',
|
||
'server.jsx',
|
||
].concat(moduleFileExtensions);
|
||
}
|
||
|
||
const prodFileExtensions = [
|
||
'prod.native.js',
|
||
'prod.native.ts',
|
||
'prod.native.jsx',
|
||
'prod.native.tsx',
|
||
'prod.js',
|
||
'prod.ts',
|
||
'prod.jsx',
|
||
'prod.tsx',
|
||
];
|
||
|
||
if (process.env.NODE_ENV === 'production') {
|
||
moduleFileExtensions = prodFileExtensions.concat(moduleFileExtensions);
|
||
}
|
||
else if (process.env.NODE_ENV === 'staging') {
|
||
moduleFileExtensions = [
|
||
'staging.native.js',
|
||
'staging.native.ts',
|
||
'staging.native.jsx',
|
||
'staging.native.tsx',
|
||
'staging.js',
|
||
'staging.ts',
|
||
'staging.jsx',
|
||
'staging.tsx',
|
||
].concat(prodFileExtensions).concat(moduleFileExtensions);
|
||
} else {
|
||
moduleFileExtensions = [
|
||
'dev.native.js',
|
||
'dev.native.ts',
|
||
'dev.native.jsx',
|
||
'dev.native.tsx',
|
||
'dev.js',
|
||
'dev.ts',
|
||
'dev.jsx',
|
||
'dev.tsx',
|
||
].concat(moduleFileExtensions);
|
||
}
|
||
|
||
const sourceExts = moduleFileExtensions;
|
||
|
||
const NullModules = ['fs', 'url'];
|
||
/**
|
||
* Metro configuration
|
||
* https://facebook.github.io/metro/docs/configuration
|
||
*
|
||
* @type {import('metro-config').MetroConfig}
|
||
*/
|
||
const config = {
|
||
transformer: {
|
||
babelTransformerPath: resolve(__dirname, 'transformer.js'),
|
||
// hermesParser: true,
|
||
},
|
||
resolver: {
|
||
sourceExts,
|
||
resolveRequest: (context, moduleName, platform) => {
|
||
if (NullModules.includes(moduleName)) {
|
||
return {
|
||
type: 'empty',
|
||
};
|
||
}
|
||
return context.resolveRequest(context, moduleName, platform);
|
||
},
|
||
nodeModulesPaths: [resolve(process.cwd(), '..', 'node_modules')], // development模式下,oak的库是以文件方式链接,其自身的node_modules里可能会缺失一些库
|
||
},
|
||
watchFolders,
|
||
};
|
||
|
||
module.exports = config;
|