Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
const source = argv.source;
const sourceSegments = source.split( path.sep );
const packageName = sourceSegments[ 0 ];
const scriptName =
sourceSegments.length > 1 ? sourceSegments.slice( 1 ).join( path.sep ) : source;
// object provides ability to name the entry point
// which enables dynamic file names
const entry = {
[ scriptName ]: path.join( __dirname, 'full-site-editing-plugin', source ),
};
const outputPath = path.join( __dirname, 'full-site-editing-plugin', packageName, 'dist' );
const webpackConfig = getBaseWebpackConfig( env, argv );
return {
...webpackConfig,
entry,
output: {
...webpackConfig.output,
path: outputPath,
filename: '[name].js', // dynamic filename
},
watch: isDevelopment,
devtool: isDevelopment ? 'inline-cheap-source-map' : false,
stats: 'minimal',
};
}
entry: {
editor: editorScript,
'editor-experimental': editorExperimentalScript,
'editor-beta': editorBetaScript,
...viewBlocksScripts,
},
'output-chunk-filename': '[name].[chunkhash].js',
'output-path': path.join( __dirname, '_inc', 'blocks' ),
}
);
const transpileConfig = extensionsWebpackConfig.module.rules.find( rule =>
rule.use.some( loader => loader.options.presets )
);
const componentsWebpackConfig = getBaseWebpackConfig(
{ WP: false },
{
entry: {
components: path.join( __dirname, './extensions/shared/components/index.jsx' ),
},
'output-chunk-filename': '[name].[chunkhash].js',
'output-library-target': 'commonjs2',
'output-path': path.join( __dirname, '_inc', 'blocks' ),
'output-pathinfo': true,
}
);
// We export two configuration files: One for admin.js, and one for components.jsx.
// The latter produces pre-rendered components HTML.
module.exports = [
{
/**
* External dependencies
*/
const getBaseWebpackConfig = require( '@automattic/calypso-build/webpack.config.js' );
const path = require( 'path' );
const isDevelopment = process.env.NODE_ENV !== 'production';
const baseWebpackConfig = getBaseWebpackConfig(
{ WP: false },
{
entry: {}, // We'll override later
'output-filename': '[name].js',
'output-path': path.join( __dirname, '_inc', 'build' ),
}
);
const sharedWebpackConfig = {
...baseWebpackConfig,
resolve: {
...baseWebpackConfig.resolve,
modules: [ path.resolve( __dirname, '_inc/client' ), 'node_modules' ],
},
node: {
fs: 'empty',
...blockScripts( 'editor', path.join( __dirname, 'extensions' ), presetProductionBlocks ),
];
// Combines all the different Experimental blocks into one editor.js script
const editorExperimentalScript = [
editorSetup,
...blockScripts( 'editor', path.join( __dirname, 'extensions' ), presetExperimentalBlocks ),
];
// Combines all the different blocks into one editor-beta.js script
const editorBetaScript = [
editorSetup,
...blockScripts( 'editor', path.join( __dirname, 'extensions' ), presetBetaBlocks ),
];
const extensionsWebpackConfig = getBaseWebpackConfig(
{ WP: true },
{
entry: {
editor: editorScript,
'editor-experimental': editorExperimentalScript,
'editor-beta': editorBetaScript,
...viewBlocksScripts,
},
'output-chunk-filename': '[name].[chunkhash].js',
'output-path': path.join( __dirname, '_inc', 'blocks' ),
}
);
const transpileConfig = extensionsWebpackConfig.module.rules.find( rule =>
rule.use.some( loader => loader.options.presets )
);
// Get files for wizards scripts.
const wizardsScripts = fs
.readdirSync( wizardsDir )
.filter( wizard =>
fs.existsSync( path.join( __dirname, 'assets', 'wizards', wizard, 'index.js' ) )
);
const wizardsScriptFiles = {};
wizardsScripts.forEach( function( wizard ) {
wizardsScriptFiles[ wizard ] = [
path.join( __dirname, 'assets', 'shared', 'js', 'public-path.js' ),
path.join( __dirname, 'assets', 'wizards', wizard, 'index.js' ),
];
} );
const webpackConfig = getBaseWebpackConfig(
{ WP: true },
{
entry: wizardsScriptFiles,
'output-path': path.join( __dirname, 'dist' ),
}
);
module.exports = webpackConfig;
function getWebpackConfig( env, argv ) {
const webpackConfig = getBaseWebpackConfig( env, argv );
return {
...webpackConfig,
entry: {
// TODO: Remove this! It is only here to fix the empty build.
index: './assets/block-editor/index.js',
},
output: {
path: path.resolve( __dirname, 'assets/block-editor/build' ),
},
node: {
crypto: 'empty',
},
};
}
entry: {
editor: editorScript,
'editor-experimental': editorExperimentalScript,
'editor-beta': editorBetaScript,
...viewBlocksScripts,
},
'output-chunk-filename': '[name].[chunkhash].js',
'output-path': path.join( __dirname, '_inc', 'blocks' ),
}
);
const transpileConfig = extensionsWebpackConfig.module.rules.find( rule =>
rule.use.some( loader => loader.options.presets )
);
const componentsWebpackConfig = getBaseWebpackConfig(
{ WP: false },
{
entry: {
components: path.join( __dirname, './extensions/shared/components/index.jsx' ),
},
'output-chunk-filename': '[name].[chunkhash].js',
'output-library-target': 'commonjs2',
'output-path': path.join( __dirname, '_inc', 'blocks' ),
'output-pathinfo': true,
}
);
// We export two configuration files: One for admin.js, and one for components.jsx.
// The latter produces pre-rendered components HTML.
module.exports = [
{
/**
* External dependencies
*/
const getBaseWebpackConfig = require( '@automattic/calypso-build/webpack.config.js' );
const path = require( 'path' );
const StaticSiteGeneratorPlugin = require( 'static-site-generator-webpack-plugin' );
const DependencyExtractionWebpackPlugin = require( '@wordpress/dependency-extraction-webpack-plugin' );
const isDevelopment = process.env.NODE_ENV !== 'production';
const baseWebpackConfig = getBaseWebpackConfig(
{ WP: false },
{
entry: {}, // We'll override later
'output-filename': '[name].js',
'output-path': path.join( __dirname, '_inc', 'build' ),
}
);
const sharedWebpackConfig = {
...baseWebpackConfig,
resolve: {
...baseWebpackConfig.resolve,
modules: [ path.resolve( __dirname, '_inc/client' ), 'node_modules' ],
},
node: {
fs: 'empty',
function getWebpackConfig(
env = {},
{
entry = path.join( __dirname, 'src', 'standalone' ),
'output-path': outputPath = path.join( __dirname, 'dist' ),
'output-filename': outputFilename = 'build.min.js',
}
) {
const webpackConfig = getBaseWebpackConfig( env, {
entry,
'output-filename': outputFilename,
'output-path': outputPath,
} );
const pageMeta = {
nodePlatform: process.platform,
nodeVersion: process.version,
gitDescribe: spawnSync( 'git', [ 'describe', '--always', '--dirty', '--long' ], {
encoding: 'utf8',
} ).stdout.replace( '\n', '' ),
};
return {
...webpackConfig,
plugins: [
function getWebpackConfig(
env = {},
{
entry = {
'default.editor': path.join( __dirname, 'src', 'default', 'editor' ),
'default.view': path.join( __dirname, 'src', 'default', 'view' ),
'wpcom.editor': path.join( __dirname, 'src', 'wpcom', 'editor' ),
'calypso.editor': path.join( __dirname, 'src', 'calypso', 'editor' ),
'calypso.tinymce': path.join( __dirname, 'src', 'calypso', 'tinymce' ),
},
'output-path': outputPath = path.join( __dirname, 'dist' ),
'output-filename': outputFilename = isDevelopment ? '[name].js' : '[name].min.js',
}
) {
const webpackConfig = getBaseWebpackConfig( env, {
entry,
'output-filename': outputFilename,
'output-path': outputPath,
} );
return {
...webpackConfig,
devtool: isDevelopment ? 'inline-cheap-source-map' : false,
plugins: [
...webpackConfig.plugins.filter(
plugin => plugin.constructor.name !== 'DependencyExtractionWebpackPlugin'
),
new DependencyExtractionWebpackPlugin( {
requestToExternal( request ) {
if ( request === 'tinymce/tinymce' ) {
return 'tinymce';