mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
70935a4fa4
A small test harness bundle was recently added that is breaking the docker image build. It could be added to the docker image, but that would introduce a bunch of extraneous test file dependencies. So this tweaks the build to simply skip the test bundle if its primary source file is not found. Also added some other test fixes along the way: * make a custom widget test more reliable * update a localization test now that `pt` exists * store more log info in artifact on error
94 lines
3.1 KiB
JavaScript
94 lines
3.1 KiB
JavaScript
const fs = require('fs');
|
|
const MomentLocalesPlugin = require('moment-locales-webpack-plugin');
|
|
const { ProvidePlugin } = require('webpack');
|
|
const path = require('path');
|
|
|
|
// Get path to top-level node_modules if in a yarn workspace.
|
|
// Otherwise node_modules one level up won't get resolved.
|
|
// This is used in Electron packaging.
|
|
const base = path.dirname(path.dirname(require.resolve('grainjs/package.json')));
|
|
|
|
module.exports = {
|
|
target: 'web',
|
|
entry: {
|
|
main: "app/client/app",
|
|
errorPages: "app/client/errorMain",
|
|
account: "app/client/accountMain",
|
|
billing: "app/client/billingMain",
|
|
activation: "app/client/activationMain",
|
|
// Include client test harness if it is present (it won't be in
|
|
// docker image).
|
|
...(fs.existsSync("test/client-harness/client.js") ? {
|
|
test: "test/client-harness/client",
|
|
} : {}),
|
|
},
|
|
output: {
|
|
filename: "[name].bundle.js",
|
|
sourceMapFilename: "[file].map",
|
|
path: path.resolve("./static"),
|
|
// Workaround for a known issue with webpack + onerror under chrome, see:
|
|
// https://github.com/webpack/webpack/issues/5681
|
|
// "We use a source map plugin here with this special configuration
|
|
// because if we do not - the window.onerror function does not work properly in chrome
|
|
// and it swallows the errors because normally source maps have begin with webpack:///
|
|
// here we are changing how the module file names are created
|
|
// See this bug
|
|
// https://bugs.chromium.org/p/chromium/issues/detail?id=765909
|
|
// See this for syntax
|
|
// https://webpack.js.org/configuration/output/#output-devtoolmodulefilenametemplate
|
|
// "
|
|
devtoolModuleFilenameTemplate: "[resourcePath]?[loaders]",
|
|
crossOriginLoading: "anonymous",
|
|
},
|
|
// This creates .map files, and takes webpack a couple of seconds to rebuild while developing,
|
|
// but provides correct mapping back to typescript, and allows breakpoints to be set in
|
|
// typescript ("cheap-module-eval-source-map" is faster, but breakpoints are largely broken).
|
|
devtool: "source-map",
|
|
resolve: {
|
|
extensions: ['.ts', '.js'],
|
|
modules: [
|
|
path.resolve('.'),
|
|
path.resolve('./ext'),
|
|
path.resolve('./stubs'),
|
|
path.resolve('./node_modules'),
|
|
base,
|
|
],
|
|
fallback: {
|
|
'path': require.resolve("path-browserify"),
|
|
},
|
|
},
|
|
module: {
|
|
rules: [
|
|
{
|
|
test: /\.(js|ts)?$/,
|
|
loader: 'esbuild-loader',
|
|
options: {
|
|
loader: 'ts',
|
|
target: 'es2017',
|
|
sourcemap: true,
|
|
},
|
|
exclude: /node_modules/
|
|
},
|
|
{ test: /\.js$/,
|
|
use: ["source-map-loader"],
|
|
enforce: "pre"
|
|
}
|
|
]
|
|
},
|
|
plugins: [
|
|
// Some modules assume presence of Buffer and process.
|
|
new ProvidePlugin({
|
|
process: 'process/browser',
|
|
Buffer: ['buffer', 'Buffer']
|
|
}),
|
|
// To strip all locales except “en”
|
|
new MomentLocalesPlugin()
|
|
],
|
|
externals: {
|
|
// for test bundle: jsdom should not be touched within browser
|
|
jsdom: 'alert',
|
|
// for test bundle: jquery will be available as jQuery
|
|
jquery: 'jQuery'
|
|
},
|
|
};
|