soapbox/webpack/development.js

117 wiersze
2.4 KiB
JavaScript
Czysty Zwykły widok Historia

2020-03-27 20:59:38 +00:00
// Note: You must restart bin/webpack-dev-server for changes to take effect
console.log('Running in development mode'); // eslint-disable-line no-console
2020-03-27 20:59:38 +00:00
const { join } = require('path');
2020-10-07 21:33:56 +00:00
const { merge } = require('webpack-merge');
2020-03-27 20:59:38 +00:00
const sharedConfig = require('./shared');
const watchOptions = {};
2021-11-04 04:41:55 +00:00
const {
DEVSERVER_URL,
BACKEND_URL,
PATRON_URL,
PROXY_HTTPS_INSECURE,
} = process.env;
const DEFAULTS = {
DEVSERVER_URL: 'http://localhost:3036',
PATRON_URL: 'http://localhost:3037',
};
2020-04-21 18:34:18 +00:00
const { FE_SUBDIRECTORY } = require(join(__dirname, '..', 'app', 'soapbox', 'build_config'));
2020-04-21 18:34:18 +00:00
const backendEndpoints = [
'/api',
2020-04-22 01:42:19 +00:00
'/pleroma',
2020-04-21 18:34:18 +00:00
'/nodeinfo',
'/socket',
'/oauth',
2020-05-25 00:14:36 +00:00
'/auth/password',
2020-04-21 18:34:18 +00:00
'/.well-known/webfinger',
'/static',
'/main/ostatus',
'/ostatus_subscribe',
'/favicon.png',
2020-04-21 18:34:18 +00:00
];
const makeProxyConfig = () => {
2021-11-04 04:41:55 +00:00
const secureProxy = PROXY_HTTPS_INSECURE !== 'true';
const proxyConfig = {};
proxyConfig['/api/patron'] = {
2021-11-04 04:41:55 +00:00
target: PATRON_URL || DEFAULTS.PATRON_URL,
secure: secureProxy,
changeOrigin: true,
};
2020-04-21 18:34:18 +00:00
backendEndpoints.map(endpoint => {
proxyConfig[endpoint] = {
2021-11-04 04:41:55 +00:00
target: BACKEND_URL || DEFAULTS.BACKEND_URL,
2020-04-21 18:34:18 +00:00
secure: secureProxy,
changeOrigin: true,
2020-04-21 18:34:18 +00:00
};
});
return proxyConfig;
};
2020-03-28 05:56:50 +00:00
2020-03-27 20:59:38 +00:00
if (process.env.VAGRANT) {
// If we are in Vagrant, we can't rely on inotify to update us with changed
// files, so we must poll instead. Here, we poll every second to see if
// anything has changed.
watchOptions.poll = 1000;
}
2021-11-04 04:41:55 +00:00
const devServerUrl = (() => {
try {
return new URL(DEVSERVER_URL);
} catch {
return new URL(DEFAULTS.DEVSERVER_URL);
}
})();
2021-09-05 21:42:48 +00:00
module.exports = merge(sharedConfig, {
2020-03-27 20:59:38 +00:00
mode: 'development',
cache: true,
devtool: 'source-map',
stats: {
2021-09-05 21:42:48 +00:00
preset: 'errors-warnings',
2020-03-27 20:59:38 +00:00
errorDetails: true,
},
output: {
pathinfo: true,
},
2021-09-05 21:42:48 +00:00
watchOptions: Object.assign(
{},
{ ignored: '**/node_modules/**' },
watchOptions,
),
2020-03-27 20:59:38 +00:00
devServer: {
compress: true,
2021-11-04 04:41:55 +00:00
host: devServerUrl.hostname,
port: devServerUrl.port,
https: devServerUrl.protocol === 'https:',
hot: false,
allowedHosts: 'all',
2020-03-27 20:59:38 +00:00
historyApiFallback: {
disableDotRule: true,
index: join(FE_SUBDIRECTORY, '/'),
2020-03-27 20:59:38 +00:00
},
headers: {
'Access-Control-Allow-Origin': '*',
},
2021-09-05 21:42:48 +00:00
client: {
overlay: true,
},
static: {
serveIndex: true,
},
2020-04-21 18:34:18 +00:00
proxy: makeProxyConfig(),
2020-03-27 20:59:38 +00:00
},
2021-09-05 21:42:48 +00:00
});