@@ -3,6 +3,7 @@ import * as ReactRefreshWebpackPlugin from '@pmmmwh/react-refresh-webpack-plugin
33import * as HtmlWebpackPlugin from 'html-webpack-plugin' ;
44import * as _ from 'lodash' ;
55import * as MiniCssExtractPlugin from 'mini-css-extract-plugin' ;
6+ import * as CopyWebpackPlugin from 'copy-webpack-plugin' ;
67import * as path from 'path' ;
78import * as webpack from 'webpack' ;
89import { WebpackSharedObject , WebpackSharedConfig } from '@openshift/dynamic-plugin-sdk-webpack' ;
@@ -24,7 +25,6 @@ interface Configuration extends webpack.Configuration {
2425const ForkTsCheckerWebpackPlugin = require ( 'fork-ts-checker-webpack-plugin' ) ;
2526const { BundleAnalyzerPlugin } = require ( 'webpack-bundle-analyzer' ) ;
2627const MonacoWebpackPlugin = require ( 'monaco-editor-webpack-plugin' ) ;
27- const CopyWebpackPlugin = require ( 'copy-webpack-plugin' ) ;
2828const NodePolyfillPlugin = require ( 'node-polyfill-webpack-plugin' ) ;
2929
3030const NODE_ENV = process . env . NODE_ENV || 'development' ;
@@ -287,31 +287,16 @@ const config: Configuration = {
287287 } ) ,
288288 new CopyWebpackPlugin ( {
289289 patterns : [
290- { from : path . resolve ( __dirname , './public/locales' ) , to : 'locales' } ,
291- { from : path . resolve ( __dirname , './packages/console-shared/locales' ) , to : 'locales' } ,
292- { from : path . resolve ( __dirname , './packages/console-app/locales' ) , to : 'locales' } ,
290+ { from : path . resolve ( __dirname , './public/robots.txt' ) , to : 'robots.txt' } ,
293291 {
294- from : path . resolve ( __dirname , './packages/operator-lifecycle-manager/locales' ) ,
295- to : 'locales' ,
296- } ,
297- {
298- from : path . resolve ( __dirname , './packages/operator-lifecycle-manager-v1/locales' ) ,
299- to : 'locales' ,
300- } ,
301- { from : path . resolve ( __dirname , './packages/dev-console/locales' ) , to : 'locales' } ,
302- { from : path . resolve ( __dirname , './packages/knative-plugin/locales' ) , to : 'locales' } ,
303- { from : path . resolve ( __dirname , './packages/container-security/locales' ) , to : 'locales' } ,
304- { from : path . resolve ( __dirname , './packages/shipwright-plugin/locales' ) , to : 'locales' } ,
305- { from : path . resolve ( __dirname , './packages/webterminal-plugin/locales' ) , to : 'locales' } ,
306- { from : path . resolve ( __dirname , './packages/topology/locales' ) , to : 'locales' } ,
307- { from : path . resolve ( __dirname , './packages/helm-plugin/locales' ) , to : 'locales' } ,
308- { from : path . resolve ( __dirname , './packages/git-service/locales' ) , to : 'locales' } ,
309- { from : path . resolve ( __dirname , './packages/metal3-plugin/locales' ) , to : 'locales' } ,
310- { from : path . resolve ( __dirname , './packages/vsphere-plugin/locales' ) , to : 'locales' } ,
311- { from : path . resolve ( __dirname , './packages/insights-plugin/locales' ) , to : 'locales' } ,
312- {
313- from : path . resolve ( __dirname , './packages/console-telemetry-plugin/locales' ) ,
314- to : 'locales' ,
292+ from : './{packages/*,public}/locales' ,
293+ // Flat locales directory structure: /static/locales/{en,fr,...}/{namespace}.json
294+ to : ( { absoluteFilename } ) => {
295+ const segments = absoluteFilename . split ( path . sep ) ;
296+ return segments . slice ( segments . lastIndexOf ( 'locales' ) ) . join ( path . sep ) ;
297+ } ,
298+ context : path . resolve ( __dirname ) ,
299+ filter : ( p ) => path . extname ( p ) === '.json' ,
315300 } ,
316301 ] ,
317302 } ) ,
0 commit comments