mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2025-10-16 12:05:38 +00:00
Updated WordPress packages necessary for releasing WordPress 6.1 Beta 1: - @wordpress/a11y@3.17.1 - @wordpress/annotations@2.17.2 - @wordpress/api-fetch@6.14.1 - @wordpress/autop@3.17.1 - @wordpress/babel-plugin-import-jsx-pragma@4.0.1 - @wordpress/babel-plugin-makepot@5.1.1 - @wordpress/babel-preset-default@7.1.1 - @wordpress/base-styles@4.8.1 - @wordpress/blob@3.17.1 - @wordpress/block-directory@3.15.2 - @wordpress/block-editor@10.0.2 - @wordpress/block-library@7.14.2 - @wordpress/block-serialization-default-parser@4.17.1 - @wordpress/block-serialization-spec-parser@4.17.1 - @wordpress/blocks@11.16.2 - @wordpress/browserslist-config@5.0.1 - @wordpress/components@21.0.2 - @wordpress/compose@5.15.2 - @wordpress/core-data@5.0.2 - @wordpress/create-block-tutorial-template@2.5.1 - @wordpress/create-block@4.1.1 - @wordpress/custom-templated-path-webpack-plugin@2.1.3 - @wordpress/customize-widgets@3.14.2 - @wordpress/data-controls@2.17.2 - @wordpress/data@7.1.2 - @wordpress/date@4.17.1 - @wordpress/dependency-extraction-webpack-plugin@4.0.2 - @wordpress/deprecated@3.17.1 - @wordpress/docgen@1.26.1 - @wordpress/dom-ready@3.17.1 - @wordpress/dom@3.17.2 - @wordpress/e2e-test-utils@8.1.1 - @wordpress/e2e-tests@5.1.2 - @wordpress/edit-post@6.14.2 - @wordpress/edit-site@4.14.2 - @wordpress/edit-widgets@4.14.2 - @wordpress/editor@12.16.2 - @wordpress/element@4.15.1 - @wordpress/env@5.2.1 - @wordpress/escape-html@2.17.1 - @wordpress/eslint-plugin@13.1.1 - @wordpress/format-library@3.15.2 - @wordpress/hooks@3.17.1 - @wordpress/html-entities@3.17.1 - @wordpress/i18n@4.17.1 - @wordpress/icons@9.8.1 - @wordpress/interface@4.16.2 - @wordpress/is-shallow-equal@4.17.1 - @wordpress/jest-console@6.0.1 - @wordpress/jest-preset-default@9.0.1 - @wordpress/jest-puppeteer-axe@5.0.1 - @wordpress/keyboard-shortcuts@3.15.2 - @wordpress/keycodes@3.17.1 - @wordpress/lazy-import@1.4.3 - @wordpress/library-export-default-webpack-plugin@2.3.3 - @wordpress/list-reusable-blocks@3.15.2 - @wordpress/media-utils@4.8.1 - @wordpress/notices@3.17.2 - @wordpress/npm-package-json-lint-config@4.2.1 - @wordpress/nux@5.15.2 - @wordpress/plugins@4.15.2 - @wordpress/postcss-plugins-preset@4.1.1 - @wordpress/postcss-themes@5.0.1 - @wordpress/preferences-persistence@1.9.1 - @wordpress/preferences@2.9.2 - @wordpress/prettier-config@2.0.1 - @wordpress/primitives@3.15.1 - @wordpress/priority-queue@2.17.2 - @wordpress/project-management-automation@1.16.1 - @wordpress/react-i18n@3.15.1 - @wordpress/readable-js-assets-webpack-plugin@2.0.1 - @wordpress/redux-routine@4.17.1 - @wordpress/reusable-blocks@3.15.2 - @wordpress/rich-text@5.15.2 - @wordpress/scripts@24.1.2 - @wordpress/server-side-render@3.15.2 - @wordpress/shortcode@3.17.1 - @wordpress/style-engine@1.0.1 - @wordpress/stylelint-config@21.0.1 - @wordpress/token-list@2.17.1 - @wordpress/url@3.18.1 - @wordpress/viewport@4.15.2 - @wordpress/warning@2.17.1 - @wordpress/widgets@2.15.2 - @wordpress/wordcount@3.17.1 Props bernhard-reiter, cbravobernal, czapla, oandregal, isabel_brison, andrewserong, mciampini. See #56467. git-svn-id: https://develop.svn.wordpress.org/trunk@54257 602fd350-edb4-49c9-b593-d223f7449a82
179 lines
6.1 KiB
JavaScript
179 lines
6.1 KiB
JavaScript
/**
|
|
* External dependencies
|
|
*/
|
|
const { DefinePlugin } = require( 'webpack' );
|
|
const CopyWebpackPlugin = require( 'copy-webpack-plugin' );
|
|
const LiveReloadPlugin = require( 'webpack-livereload-plugin' );
|
|
const UglifyJS = require( 'uglify-js' );
|
|
const { join } = require( 'path' );
|
|
|
|
/**
|
|
* WordPress dependencies
|
|
*/
|
|
const {
|
|
camelCaseDash,
|
|
} = require( '@wordpress/dependency-extraction-webpack-plugin/lib/util' );
|
|
const DependencyExtractionPlugin = require( '@wordpress/dependency-extraction-webpack-plugin' );
|
|
|
|
/**
|
|
* Internal dependencies
|
|
*/
|
|
const { stylesTransform, baseConfig, baseDir } = require( './shared' );
|
|
const { dependencies } = require( '../../package' );
|
|
|
|
const exportDefaultPackages = [
|
|
'api-fetch',
|
|
'deprecated',
|
|
'dom-ready',
|
|
'redux-routine',
|
|
'token-list',
|
|
'server-side-render',
|
|
'shortcode',
|
|
'warning',
|
|
];
|
|
|
|
/**
|
|
* Maps vendors to copy commands for the CopyWebpackPlugin.
|
|
*
|
|
* @param {Object} vendors Vendors to include in the vendor folder.
|
|
* @param {string} buildTarget The folder in which to build the packages.
|
|
*
|
|
* @return {Object[]} Copy object suitable for the CopyWebpackPlugin.
|
|
*/
|
|
function mapVendorCopies( vendors, buildTarget ) {
|
|
return Object.keys( vendors ).map( ( filename ) => ( {
|
|
from: join( baseDir, `node_modules/${ vendors[ filename ] }` ),
|
|
to: join( baseDir, `${ buildTarget }/js/dist/vendor/${ filename }` ),
|
|
} ) );
|
|
}
|
|
|
|
module.exports = function( env = { environment: 'production', watch: false, buildTarget: false } ) {
|
|
const mode = env.environment;
|
|
const suffix = mode === 'production' ? '.min' : '';
|
|
let buildTarget = env.buildTarget ? env.buildTarget : ( mode === 'production' ? 'build' : 'src' );
|
|
buildTarget = buildTarget + '/wp-includes';
|
|
|
|
const WORDPRESS_NAMESPACE = '@wordpress/';
|
|
const BUNDLED_PACKAGES = [ '@wordpress/icons', '@wordpress/interface' ];
|
|
const packages = Object.keys( dependencies )
|
|
.filter( ( packageName ) =>
|
|
! BUNDLED_PACKAGES.includes( packageName ) &&
|
|
packageName.startsWith( WORDPRESS_NAMESPACE )
|
|
)
|
|
.map( ( packageName ) => packageName.replace( WORDPRESS_NAMESPACE, '' ) );
|
|
|
|
const vendors = {
|
|
'lodash.js': 'lodash/lodash.js',
|
|
'wp-polyfill.js': '@wordpress/babel-preset-default/build/polyfill.js',
|
|
'wp-polyfill-fetch.js': 'whatwg-fetch/dist/fetch.umd.js',
|
|
'wp-polyfill-element-closest.js': 'element-closest/element-closest.js',
|
|
'wp-polyfill-node-contains.js': 'polyfill-library/polyfills/__dist/Node.prototype.contains/raw.js',
|
|
'wp-polyfill-url.js': 'core-js-url-browser/url.js',
|
|
'wp-polyfill-dom-rect.js': 'polyfill-library/polyfills/__dist/DOMRect/raw.js',
|
|
'wp-polyfill-formdata.js': 'formdata-polyfill/FormData.js',
|
|
'wp-polyfill-object-fit.js': 'objectFitPolyfill/src/objectFitPolyfill.js',
|
|
'moment.js': 'moment/moment.js',
|
|
'react.js': 'react/umd/react.development.js',
|
|
'react-dom.js': 'react-dom/umd/react-dom.development.js',
|
|
'regenerator-runtime.js': 'regenerator-runtime/runtime.js',
|
|
};
|
|
|
|
const minifiedVendors = {
|
|
'lodash.min.js': 'lodash/lodash.min.js',
|
|
'wp-polyfill.min.js': '@wordpress/babel-preset-default/build/polyfill.min.js',
|
|
'wp-polyfill-formdata.min.js': 'formdata-polyfill/formdata.min.js',
|
|
'wp-polyfill-url.min.js': 'core-js-url-browser/url.min.js',
|
|
'wp-polyfill-object-fit.min.js': 'objectFitPolyfill/dist/objectFitPolyfill.min.js',
|
|
'moment.min.js': 'moment/min/moment.min.js',
|
|
'react.min.js': 'react/umd/react.production.min.js',
|
|
'react-dom.min.js': 'react-dom/umd/react-dom.production.min.js',
|
|
};
|
|
|
|
const minifyVendors = {
|
|
'regenerator-runtime.min.js': 'regenerator-runtime/runtime.js',
|
|
'wp-polyfill-fetch.min.js': 'whatwg-fetch/dist/fetch.umd.js',
|
|
'wp-polyfill-element-closest.min.js': 'element-closest/element-closest.js',
|
|
'wp-polyfill-node-contains.min.js': 'polyfill-library/polyfills/__dist/Node.prototype.contains/raw.js',
|
|
'wp-polyfill-dom-rect.min.js': 'polyfill-library/polyfills/__dist/DOMRect/raw.js',
|
|
};
|
|
|
|
const phpFiles = {
|
|
'block-serialization-default-parser/parser.php': 'wp-includes/class-wp-block-parser.php',
|
|
};
|
|
|
|
const developmentCopies = mapVendorCopies( vendors, buildTarget );
|
|
const minifiedCopies = mapVendorCopies( minifiedVendors, buildTarget );
|
|
const minifyCopies = mapVendorCopies( minifyVendors, buildTarget ).map( ( copyCommand ) => {
|
|
return {
|
|
...copyCommand,
|
|
transform: ( content ) => {
|
|
return UglifyJS.minify( content.toString() ).code;
|
|
},
|
|
};
|
|
} );
|
|
|
|
let vendorCopies = mode === "development" ? developmentCopies : [ ...minifiedCopies, ...minifyCopies ];
|
|
|
|
let cssCopies = packages.map( ( packageName ) => ( {
|
|
from: join( baseDir, `node_modules/@wordpress/${ packageName }/build-style/*.css` ),
|
|
to: join( baseDir, `${ buildTarget }/css/dist/${ packageName }/[name]${ suffix }.css` ),
|
|
transform: stylesTransform( mode ),
|
|
noErrorOnMissing: true,
|
|
} ) );
|
|
|
|
const phpCopies = Object.keys( phpFiles ).map( ( filename ) => ( {
|
|
from: join( baseDir, `node_modules/@wordpress/${ filename }` ),
|
|
to: join( baseDir, `src/${ phpFiles[ filename ] }` ),
|
|
} ) );
|
|
|
|
const config = {
|
|
...baseConfig( env ),
|
|
entry: packages.reduce( ( memo, packageName ) => {
|
|
memo[ packageName ] = {
|
|
import: join( baseDir, `node_modules/@wordpress/${ packageName }` ),
|
|
library: {
|
|
name: [ 'wp', camelCaseDash( packageName ) ],
|
|
type: 'window',
|
|
export: exportDefaultPackages.includes( packageName )
|
|
? 'default'
|
|
: undefined,
|
|
},
|
|
};
|
|
|
|
return memo;
|
|
}, {} ),
|
|
output: {
|
|
devtoolNamespace: 'wp',
|
|
filename: `[name]${ suffix }.js`,
|
|
path: join( baseDir, `${ buildTarget }/js/dist` ),
|
|
},
|
|
plugins: [
|
|
new DefinePlugin( {
|
|
// Inject the `IS_GUTENBERG_PLUGIN` global, used for feature flagging.
|
|
'process.env.IS_GUTENBERG_PLUGIN': false,
|
|
'process.env.FORCE_REDUCED_MOTION': JSON.stringify(
|
|
process.env.FORCE_REDUCED_MOTION
|
|
),
|
|
} ),
|
|
new DependencyExtractionPlugin( {
|
|
injectPolyfill: true,
|
|
combineAssets: true,
|
|
combinedOutputFile: '../../assets/script-loader-packages.php',
|
|
} ),
|
|
new CopyWebpackPlugin( {
|
|
patterns: [
|
|
...vendorCopies,
|
|
...cssCopies,
|
|
...phpCopies,
|
|
],
|
|
} ),
|
|
],
|
|
};
|
|
|
|
if ( config.mode === 'development' ) {
|
|
config.plugins.push( new LiveReloadPlugin( { port: process.env.WORDPRESS_LIVE_RELOAD_PORT || 35729 } ) );
|
|
}
|
|
|
|
return config;
|
|
};
|