export function getPlugins({ excludeOtherAppLocales = true } = {}) { const appName = config.get('appName'); const clientConfig = getClientConfig(config); const plugins = [ new webpack.DefinePlugin({ CLIENT_CONFIG: JSON.stringify(clientConfig), 'process.env.NODE_ENV': JSON.stringify('production'), }), // Since the NodeJS code does not run from a webpack bundle, here // are a few replacements that affect only the client side bundle. // // This replaces the config with a new module that has sensitive, // server-only keys removed. new webpack.NormalModuleReplacementPlugin( /config$/, 'core/client/config.js', ), // This swaps the server side window object with a standard browser window. new webpack.NormalModuleReplacementPlugin( /core\/window/, 'core/browserWindow.js', ), new CircularDependencyPlugin({ exclude: /node_modules/, failOnError: true, }), ]; if (excludeOtherAppLocales) { plugins.push( // This allow us to exclude locales for other apps being built. new webpack.ContextReplacementPlugin( /locale$/, new RegExp(`^\\.\\/.*?\\/${appName}\\.js$`), ), ); } return plugins; }
it('should add config data to object', () => { const clientConfig = getClientConfig(fakeConfig); assert.equal(clientConfig.hai, 'there'); assert.equal(clientConfig.what, 'evar'); assert.equal(clientConfig.secret, undefined); });
/* eslint-disable max-len, no-console */ import fs from 'fs'; import path from 'path'; import webpack from 'webpack'; import { getClientConfig } from 'core/utils'; import config from 'config'; import webpackConfig from './webpack.prod.config.babel'; import WebpackIsomorphicToolsPlugin from 'webpack-isomorphic-tools/plugin'; import webpackIsomorphicToolsConfig from './webpack-isomorphic-tools-config'; const clientConfig = getClientConfig(config); const localDevelopment = config.util.getEnv('NODE_ENV') === 'development'; const webpackIsomorphicToolsPlugin = new WebpackIsomorphicToolsPlugin(webpackIsomorphicToolsConfig); const babelrc = fs.readFileSync('./.babelrc'); const babelrcObject = JSON.parse(babelrc); const babelPlugins = babelrcObject.plugins || []; const babelDevPlugins = [['react-transform', { transforms: [{ transform: 'react-transform-hmr', imports: ['react'], locals: ['module'], }], }]];
it('should add config data to object', () => { const clientConfig = getClientConfig(fakeConfig); expect(clientConfig.hai).toEqual('there'); expect(clientConfig.what).toEqual('evar'); expect(clientConfig.secret).toEqual(undefined); });