mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-17 21:26:00 +00:00
bundling refactor
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const volatilePackages = require('./common/volatilePackages');
|
||||
|
||||
function adjustFile(file) {
|
||||
const json = JSON.parse(fs.readFileSync(file, { encoding: 'utf-8' }));
|
||||
@@ -11,6 +12,10 @@ function adjustFile(file) {
|
||||
);
|
||||
for (const depkey of ['dependencies', 'optionalDependencies']) {
|
||||
for (const dependency of Object.keys(pluginJson[depkey] || {})) {
|
||||
if (!volatilePackages.includes(dependency)) {
|
||||
// add only voletile packages
|
||||
continue;
|
||||
}
|
||||
if (!json[depkey]) {
|
||||
json[depkey] = {};
|
||||
}
|
||||
@@ -34,3 +39,5 @@ function adjustFile(file) {
|
||||
|
||||
adjustFile('packages/api/package.json');
|
||||
adjustFile('app/package.json');
|
||||
|
||||
fs.writeFileSync('common/useBundleExternals.js', "module.exports = 'true';", 'utf-8');
|
||||
|
||||
9
app/src/nativeModulesContent.js
Normal file
9
app/src/nativeModulesContent.js
Normal file
@@ -0,0 +1,9 @@
|
||||
|
||||
// this file is generated automatically by script fillNativeModules.js, do not edit it manually
|
||||
const content = {};
|
||||
|
||||
content['better-sqlite3'] = () => require('better-sqlite3');
|
||||
content['oracledb'] = () => require('oracledb');
|
||||
|
||||
|
||||
module.exports = content;
|
||||
19
common/buildPluginExternals.js
Normal file
19
common/buildPluginExternals.js
Normal file
@@ -0,0 +1,19 @@
|
||||
const useBundleExternals = require('./useBundleExternals');
|
||||
const getBundleExternals = require('./getBundleExternals');
|
||||
|
||||
function buildExternalsFromDependencies(packageJson) {
|
||||
if (useBundleExternals == 'true') {
|
||||
return getBundleExternals();
|
||||
}
|
||||
const { dependencies, optionalDependencies } = packageJson;
|
||||
const externals = {};
|
||||
for (let dep in dependencies || {}) {
|
||||
externals[dep] = `commonjs ${dep}`;
|
||||
}
|
||||
for (let dep in optionalDependencies || {}) {
|
||||
externals[dep] = `commonjs ${dep}`;
|
||||
}
|
||||
return externals;
|
||||
}
|
||||
|
||||
module.exports = buildExternalsFromDependencies;
|
||||
10
common/getBundleExternals.js
Normal file
10
common/getBundleExternals.js
Normal file
@@ -0,0 +1,10 @@
|
||||
const volatilePackages = require('./volatilePackages');
|
||||
|
||||
function getBundleExternals() {
|
||||
return volatilePackages.reduce((acc, item) => {
|
||||
acc[item] = `commonjs ${item}`;
|
||||
return acc;
|
||||
}, {});
|
||||
}
|
||||
|
||||
module.exports = getBundleExternals;
|
||||
1
common/useBundleExternals.js
Normal file
1
common/useBundleExternals.js
Normal file
@@ -0,0 +1 @@
|
||||
module.exports = 'false';
|
||||
25
common/volatilePackages.js
Normal file
25
common/volatilePackages.js
Normal file
@@ -0,0 +1,25 @@
|
||||
// these packages will be never bundled with webpack
|
||||
|
||||
const volatilePackages = [
|
||||
'@clickhouse/client',
|
||||
'bson', // this package is already bundled and is used in mongodb
|
||||
'mongodb',
|
||||
'mongodb-client-encryption',
|
||||
'tedious',
|
||||
'msnodesqlv8',
|
||||
'mysql2',
|
||||
'oracledb',
|
||||
'pg-copy-streams',
|
||||
'pg',
|
||||
'ioredis',
|
||||
'node-redis-dump2',
|
||||
'better-sqlite3',
|
||||
'@azure/cosmos',
|
||||
'@aws-sdk/rds-signer',
|
||||
'activedirectory2',
|
||||
'axios',
|
||||
'bufferutil',
|
||||
'ssh2',
|
||||
];
|
||||
|
||||
module.exports = volatilePackages;
|
||||
BIN
packages/api/c:\test\upg\upgrade.zip
Normal file
BIN
packages/api/c:\test\upg\upgrade.zip
Normal file
Binary file not shown.
1
packages/api/c:\test\upg\upgrade.zip.version
Normal file
1
packages/api/c:\test\upg\upgrade.zip.version
Normal file
@@ -0,0 +1 @@
|
||||
5.5.6
|
||||
@@ -16,6 +16,9 @@
|
||||
"export",
|
||||
"dbgate"
|
||||
],
|
||||
"files": [
|
||||
"src"
|
||||
],
|
||||
"dependencies": {
|
||||
"@aws-sdk/rds-signer": "^3.665.0",
|
||||
"activedirectory2": "^2.1.0",
|
||||
|
||||
9
packages/api/src/nativeModulesContent.js
Normal file
9
packages/api/src/nativeModulesContent.js
Normal file
@@ -0,0 +1,9 @@
|
||||
|
||||
// this file is generated automatically by script fillNativeModules.js, do not edit it manually
|
||||
const content = {};
|
||||
|
||||
content['better-sqlite3'] = () => require('better-sqlite3');
|
||||
content['oracledb'] = () => require('oracledb');
|
||||
|
||||
|
||||
module.exports = content;
|
||||
@@ -1,5 +1,8 @@
|
||||
var webpack = require('webpack');
|
||||
var path = require('path');
|
||||
var getBundleExternals = require('../../common/getBundleExternals');
|
||||
|
||||
var externals = getBundleExternals();
|
||||
|
||||
var config = {
|
||||
context: __dirname + '/src',
|
||||
@@ -29,27 +32,28 @@ var config = {
|
||||
},
|
||||
],
|
||||
},
|
||||
plugins: [
|
||||
new webpack.IgnorePlugin({
|
||||
checkResource(resource) {
|
||||
const lazyImports = ['uws'];
|
||||
if (!lazyImports.includes(resource)) {
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
require.resolve(resource);
|
||||
} catch (err) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
}),
|
||||
],
|
||||
externals: {
|
||||
'better-sqlite3': 'commonjs better-sqlite3',
|
||||
'oracledb': 'commonjs oracledb',
|
||||
'msnodesqlv8': 'commonjs msnodesqlv8',
|
||||
},
|
||||
// plugins: [
|
||||
// new webpack.IgnorePlugin({
|
||||
// checkResource(resource) {
|
||||
// const lazyImports = ['uws'];
|
||||
// if (!lazyImports.includes(resource)) {
|
||||
// return false;
|
||||
// }
|
||||
// try {
|
||||
// require.resolve(resource);
|
||||
// } catch (err) {
|
||||
// return true;
|
||||
// }
|
||||
// return false;
|
||||
// },
|
||||
// }),
|
||||
// ],
|
||||
// externals: {
|
||||
// 'better-sqlite3': 'commonjs better-sqlite3',
|
||||
// 'oracledb': 'commonjs oracledb',
|
||||
// 'msnodesqlv8': 'commonjs msnodesqlv8',
|
||||
// },
|
||||
externals,
|
||||
};
|
||||
|
||||
module.exports = config;
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
var webpack = require('webpack');
|
||||
var path = require('path');
|
||||
|
||||
const packageJson = require('./package.json');
|
||||
const buildPluginExternals = require('../../common/buildPluginExternals');
|
||||
const externals = buildPluginExternals(packageJson);
|
||||
|
||||
var config = {
|
||||
context: __dirname + '/src/backend',
|
||||
|
||||
@@ -19,12 +23,7 @@ var config = {
|
||||
// minimize: false,
|
||||
// },
|
||||
|
||||
externals: {
|
||||
'@clickhouse/client': 'commonjs @clickhouse/client',
|
||||
'json-stable-stringify': 'commonjs json-stable-stringify',
|
||||
'dbgate-tools': 'commonjs dbgate-tools',
|
||||
lodash: 'commonjs lodash',
|
||||
},
|
||||
externals,
|
||||
};
|
||||
|
||||
module.exports = config;
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
var webpack = require('webpack');
|
||||
var path = require('path');
|
||||
|
||||
const packageJson = require('./package.json');
|
||||
const buildPluginExternals = require('../../common/buildPluginExternals');
|
||||
const externals = buildPluginExternals(packageJson);
|
||||
|
||||
var config = {
|
||||
context: __dirname + '/src/backend',
|
||||
|
||||
@@ -19,11 +23,7 @@ var config = {
|
||||
// minimize: false,
|
||||
// },
|
||||
|
||||
externals: {
|
||||
csv: 'commonjs csv',
|
||||
'line-reader': 'commonjs line-reader',
|
||||
lodash: 'commonjs lodash',
|
||||
},
|
||||
externals,
|
||||
};
|
||||
|
||||
module.exports = config;
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
var webpack = require('webpack');
|
||||
var path = require('path');
|
||||
|
||||
const packageJson = require('./package.json');
|
||||
const buildPluginExternals = require('../../common/buildPluginExternals');
|
||||
const externals = buildPluginExternals(packageJson);
|
||||
|
||||
var config = {
|
||||
context: __dirname + '/src/backend',
|
||||
|
||||
@@ -19,10 +23,7 @@ var config = {
|
||||
// minimize: false,
|
||||
// },
|
||||
|
||||
externals: {
|
||||
xlsx: 'commonjs xlsx',
|
||||
lodash: 'commonjs lodash',
|
||||
},
|
||||
externals,
|
||||
};
|
||||
|
||||
module.exports = config;
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
var webpack = require('webpack');
|
||||
var path = require('path');
|
||||
|
||||
const packageJson = require('./package.json');
|
||||
const buildPluginExternals = require('../../common/buildPluginExternals');
|
||||
const externals = buildPluginExternals(packageJson);
|
||||
|
||||
var config = {
|
||||
context: __dirname + '/src/backend',
|
||||
|
||||
@@ -19,15 +23,7 @@ var config = {
|
||||
// minimize: false,
|
||||
// },
|
||||
|
||||
externals: {
|
||||
'dbgate-tools': 'commonjs dbgate-tools',
|
||||
'dbgate-query-splitter': 'commonjs dbgate-query-splitter',
|
||||
lodash: 'commonjs lodash',
|
||||
mongodb: 'commonjs mongodb',
|
||||
'mongodb-client-encryption': 'commonjs mongodb-client-encryption',
|
||||
bson: 'commonjs bson',
|
||||
'is-promise': 'commonjs is-promise',
|
||||
},
|
||||
externals,
|
||||
};
|
||||
|
||||
module.exports = config;
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
var webpack = require('webpack');
|
||||
var path = require('path');
|
||||
|
||||
const packageJson = require('./package.json');
|
||||
const buildPluginExternals = require('../../common/buildPluginExternals');
|
||||
const externals = buildPluginExternals(packageJson);
|
||||
|
||||
var config = {
|
||||
context: __dirname + '/src/backend',
|
||||
|
||||
@@ -18,14 +22,7 @@ var config = {
|
||||
// minimize: false,
|
||||
// },
|
||||
|
||||
externals: {
|
||||
msnodesqlv8: 'commonjs msnodesqlv8',
|
||||
'async-lock': 'commonjs async-lock',
|
||||
'dbgate-query-splitter': 'commonjs dbgate-query-splitter',
|
||||
'dbgate-tools': 'commonjs dbgate-tools',
|
||||
lodash: 'commonjs lodash',
|
||||
tedious: 'commonjs tedious',
|
||||
},
|
||||
externals,
|
||||
};
|
||||
|
||||
module.exports = config;
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
var webpack = require('webpack');
|
||||
var path = require('path');
|
||||
|
||||
const packageJson = require('./package.json');
|
||||
const buildPluginExternals = require('../../common/buildPluginExternals');
|
||||
const externals = buildPluginExternals(packageJson);
|
||||
|
||||
var config = {
|
||||
context: __dirname + '/src/backend',
|
||||
|
||||
@@ -14,13 +18,7 @@ var config = {
|
||||
libraryTarget: 'commonjs2',
|
||||
},
|
||||
|
||||
externals: {
|
||||
'dbgate-tools': 'commonjs dbgate-tools',
|
||||
'dbgate-query-splitter': 'commonjs dbgate-query-splitter',
|
||||
'antares-mysql-dumper': 'commonjs antares-mysql-dumper',
|
||||
lodash: 'commonjs lodash',
|
||||
mysql2: 'commonjs mysql2',
|
||||
},
|
||||
externals,
|
||||
|
||||
// uncomment for disable minimalization
|
||||
// optimization: {
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
var webpack = require('webpack');
|
||||
var path = require('path');
|
||||
|
||||
const packageJson = require('./package.json');
|
||||
const buildPluginExternals = require('../../common/buildPluginExternals');
|
||||
const externals = buildPluginExternals(packageJson);
|
||||
|
||||
var config = {
|
||||
context: __dirname + '/src/backend',
|
||||
|
||||
@@ -36,12 +40,7 @@ var config = {
|
||||
}),
|
||||
],
|
||||
|
||||
externals: {
|
||||
'dbgate-tools': 'commonjs dbgate-tools',
|
||||
'dbgate-query-splitter': 'commonjs dbgate-query-splitter',
|
||||
lodash: 'commonjs lodash',
|
||||
oracledb: 'commonjs oracledb',
|
||||
},
|
||||
externals,
|
||||
};
|
||||
|
||||
module.exports = config;
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
var webpack = require('webpack');
|
||||
var path = require('path');
|
||||
|
||||
const packageJson = require('./package.json');
|
||||
const buildPluginExternals = require('../../common/buildPluginExternals');
|
||||
const externals = buildPluginExternals(packageJson);
|
||||
|
||||
var config = {
|
||||
context: __dirname + '/src/backend',
|
||||
|
||||
@@ -36,13 +40,7 @@ var config = {
|
||||
}),
|
||||
],
|
||||
|
||||
externals: {
|
||||
'dbgate-tools': 'commonjs dbgate-tools',
|
||||
'dbgate-query-splitter': 'commonjs dbgate-query-splitter',
|
||||
lodash: 'commonjs lodash',
|
||||
pg: 'commonjs pg',
|
||||
'pg-copy-streams': 'commonjs pg-copy-streams',
|
||||
}
|
||||
externals,
|
||||
};
|
||||
|
||||
module.exports = config;
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
var webpack = require('webpack');
|
||||
var path = require('path');
|
||||
|
||||
const packageJson = require('./package.json');
|
||||
const buildPluginExternals = require('../../common/buildPluginExternals');
|
||||
const externals = buildPluginExternals(packageJson);
|
||||
|
||||
var config = {
|
||||
context: __dirname + '/src/backend',
|
||||
|
||||
@@ -18,14 +22,7 @@ var config = {
|
||||
// optimization: {
|
||||
// minimize: false,
|
||||
// },
|
||||
externals: {
|
||||
'dbgate-tools': 'commmonjs dbgate-tools',
|
||||
'dbgate-query-splitter': 'commmonjs dbgate-query-splitter',
|
||||
lodash: 'commmonjs lodash',
|
||||
async: 'commmonjs async',
|
||||
ioredis: 'commmonjs ioredis',
|
||||
'node-redis-dump2': 'commmonjs node-redis-dump2',
|
||||
},
|
||||
externals,
|
||||
};
|
||||
|
||||
module.exports = config;
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
var webpack = require('webpack');
|
||||
var path = require('path');
|
||||
|
||||
const packageJson = require('./package.json');
|
||||
const buildPluginExternals = require('../../common/buildPluginExternals');
|
||||
const externals = buildPluginExternals(packageJson);
|
||||
|
||||
var config = {
|
||||
context: __dirname + '/src/backend',
|
||||
|
||||
@@ -18,12 +22,7 @@ var config = {
|
||||
// optimization: {
|
||||
// minimize: false,
|
||||
// },
|
||||
externals: {
|
||||
'dbgate-tools': 'commonjs dbgate-tools',
|
||||
'dbgate-query-splitter': 'commonjs dbgate-query-splitter',
|
||||
'better-sqlite3': 'commonjs better-sqlite3',
|
||||
lodash: 'commonjs lodash',
|
||||
},
|
||||
externals,
|
||||
};
|
||||
|
||||
module.exports = config;
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
var webpack = require('webpack');
|
||||
var path = require('path');
|
||||
|
||||
const packageJson = require('./package.json');
|
||||
const buildPluginExternals = require('../../common/buildPluginExternals');
|
||||
const externals = buildPluginExternals(packageJson);
|
||||
|
||||
var config = {
|
||||
context: __dirname + '/src/backend',
|
||||
|
||||
@@ -18,9 +22,7 @@ var config = {
|
||||
// optimization: {
|
||||
// minimize: false,
|
||||
// },
|
||||
externals: {
|
||||
'node-xml-stream-parser': 'commonjs node-xml-stream-parser',
|
||||
},
|
||||
externals,
|
||||
};
|
||||
|
||||
module.exports = config;
|
||||
|
||||
Reference in New Issue
Block a user