Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
let outputFilename = '[name].[chunkhash].min.js'; // prefer the chunkhash, which depends on the chunk, not the entire build
let outputChunkFilename = '[name].[chunkhash].min.js'; // ditto
// we should not use chunkhash in development: https://github.com/webpack/webpack-dev-server/issues/377#issuecomment-241258405
// also we don't minify so dont name them .min.js
//
// Desktop: no chunks or dll here, just one big file for the desktop app
if ( isDevelopment || isDesktop ) {
outputFilename = '[name].js';
outputChunkFilename = '[name].js';
}
const cssFilename = cssNameFromFilename( outputFilename );
const cssChunkFilename = cssNameFromFilename( outputChunkFilename );
const fileLoader = FileConfig.loader(
// The server bundler express middleware server assets from the hard-coded publicPath `/calypso/evergreen/`.
// This is required so that running calypso via `npm start` doesn't break.
isDevelopment
? {
outputPath: 'images',
publicPath: '/calypso/evergreen/images/',
}
: {
// File-loader does not understand absolute paths so __dirname won't work.
// Build off `output.path` for a result like `/…/public/evergreen/../images/`.
outputPath: path.join( '..', 'images' ),
publicPath: '/calypso/images/',
emitFile: browserslistEnv === defaultBrowserslistEnv, // Only output files once.
}
);
* Internal dependencies
*/
const cacheIdentifier = require( './server/bundler/babel/babel-loader-cache-identifier' );
const config = require( 'config' );
const bundleEnv = config( 'env' );
const { workerCount } = require( './webpack.common' );
const TranspileConfig = require( '@automattic/calypso-build/webpack/transpile' );
const nodeExternals = require( 'webpack-node-externals' );
const FileConfig = require( '@automattic/calypso-build/webpack/file-loader' );
/**
* Internal variables
*/
const isDevelopment = bundleEnv === 'development';
const fileLoader = FileConfig.loader( {
publicPath: isDevelopment ? '/calypso/evergreen/images/' : '/calypso/images/',
emitFile: false, // On the server side, don't actually copy files
} );
const commitSha = process.env.hasOwnProperty( 'COMMIT_SHA' ) ? process.env.COMMIT_SHA : '(unknown)';
/**
* This lists modules that must use commonJS `require()`s
* All modules listed here need to be ES5.
*
* @returns {Array} list of externals
*/
function getExternals() {
return [
// Don't bundle any node_modules, both to avoid a massive bundle, and problems
// with modules that are incompatible with webpack bundling.
} ),
},
module: {
rules: [
TranspileConfig.loader( {
workerCount,
configFile: path.join( __dirname, 'babel.config.js' ),
cacheDirectory: path.join( __dirname, '.cache' ),
exclude: /node_modules\//,
} ),
SassConfig.loader( {
preserveCssCustomProperties: false,
includePaths: [ path.join( __dirname, 'client' ) ],
prelude: '@import "~@automattic/calypso-color-schemes/src/shared/colors";',
} ),
FileConfig.loader(),
],
},
resolve: {
extensions: [ '.json', '.js', '.jsx' ],
modules: [ 'node_modules' ],
},
node: false,
plugins: [
new webpack.DefinePlugin( {
'process.env.NODE_ENV': JSON.stringify( process.env.NODE_ENV ),
global: 'window',
} ),
new webpack.IgnorePlugin( /^\.\/locale$/, /moment$/ ),
...SassConfig.plugins( { cssFilename, minify: ! isDevelopment } ),
new DuplicatePackageCheckerPlugin(),
new CopyWebpackPlugin( [