Once upon a midnight dreary, while I coded, weak and weary,
In many a strange and curious file of forgotten lore— While I pondered, blaming Nacin, my notifications suddenly awakened, As of someone quietly DMing;—DMing me, I can’t ignore. “’Tis some contributor,” I muttered, “DMing me an idea or four— Only this and nothing more.” Ah, distinctly I remember, at WordCamp US, last December; A mad proposal nearly laid me—down out cold—upon the floor. Curious, I listened closely;—to a plan I agreed with, mostly— A way to make our JavaScript—JavaScript which was a chore— Maintainable, extendable, for the future, is what I saw. Guten-ready for evermore. Open here I switch to Slack, when, with many a patch and hack, In there stepped Omar, a JavaScript developer hardcore; Pronouncing all the changes fit; ready now to be commit; “There’s nothing else for us to do,” DMing me, “It’s done!” he swore— “No longer random guessing at which file need next be explored— Let’s move on, we’re all aboard.” Moved all together, grouped and managed, in folders all is packaged, The code had all been cleaned and tidied, important parts moved to the fore, “Though this change be useful here,” I said, “it is too large, I fear, We couldn’t manage such a patch, we’ve done nothing like this before— Tell me where doth go this change, change to make our codebase soar!” Quoth Omar, “In WordPress Core.” Props omarreis for shepherding this significant change. Props adamsilverstein, aduth, atimmer, dingo_bastard, frank-klein, gziolo, herregroen, jaswrks, jeremyfelt, jipmoors, jorbin, netweb, ocean90, pento, tjnowell, and youknowriad for testing, feedback, discussion, encouragement, commiserations, etc. I make no apologies for this commit message. Fixes #43055. git-svn-id: https://develop.svn.wordpress.org/trunk@43309 602fd350-edb4-49c9-b593-d223f7449a82
4
.gitignore
vendored
@ -17,7 +17,6 @@ wp-tests-config.php
|
||||
/tests/phpunit/build
|
||||
/wp-cli.local.yml
|
||||
/jsdoc
|
||||
/vendor
|
||||
|
||||
# Files and folders that get created in wp-content
|
||||
/src/wp-content/blogs.dir
|
||||
@ -58,3 +57,6 @@ wp-tests-config.php
|
||||
*.patch
|
||||
*.diff
|
||||
.svn
|
||||
|
||||
vendor
|
||||
!/src/js/_enqueues/vendor
|
||||
|
592
Gruntfile.js
@ -83,6 +83,7 @@ module.exports = function(grunt) {
|
||||
},
|
||||
clean: {
|
||||
all: [BUILD_DIR],
|
||||
js: [BUILD_DIR + 'wp-admin/js/', BUILD_DIR + 'wp-includes/js/'],
|
||||
dynamic: {
|
||||
dot: true,
|
||||
expand: true,
|
||||
@ -92,6 +93,17 @@ module.exports = function(grunt) {
|
||||
tinymce: ['<%= concat.tinymce.dest %>'],
|
||||
qunit: ['tests/qunit/compiled.html']
|
||||
},
|
||||
file_append: {
|
||||
default_options: {
|
||||
files: [
|
||||
{
|
||||
append: 'jQuery.noConflict();',
|
||||
input: './build/wp-includes/js/jquery/jquery.js',
|
||||
output: './build/wp-includes/js/jquery/jquery.js'
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
copy: {
|
||||
files: {
|
||||
files: [
|
||||
@ -101,24 +113,169 @@ module.exports = function(grunt) {
|
||||
cwd: SOURCE_DIR,
|
||||
src: [
|
||||
'**',
|
||||
'!wp-includes/js/media/**',
|
||||
'!js/**', // JavaScript is extracted into separate copy tasks.
|
||||
'!**/.{svn,git}/**', // Ignore version control directories.
|
||||
// Ignore unminified versions of external libs we don't ship:
|
||||
'!wp-includes/js/backbone.js',
|
||||
'!wp-includes/js/underscore.js',
|
||||
'!wp-includes/js/jquery/jquery.masonry.js',
|
||||
'!wp-includes/js/jquery/ui/*.js',
|
||||
'!wp-includes/js/tinymce/tinymce.js',
|
||||
'!wp-includes/version.php' // Exclude version.php
|
||||
'!wp-includes/version.php', // Exclude version.php
|
||||
'!index.php', '!wp-admin/index.php',
|
||||
'!_index.php', '!wp-admin/_index.php'
|
||||
],
|
||||
dest: BUILD_DIR
|
||||
},
|
||||
{
|
||||
src: 'wp-config-sample.php',
|
||||
dest: BUILD_DIR
|
||||
},
|
||||
{
|
||||
'build/index.php': ['src/_index.php'],
|
||||
'build/wp-admin/index.php': ['src/wp-admin/_index.php']
|
||||
}
|
||||
]
|
||||
},
|
||||
'npm-packages': {
|
||||
files: {
|
||||
'build/wp-includes/js/backbone.js': ['./node_modules/backbone/backbone.js'],
|
||||
'build/wp-includes/js/hoverIntent.js': ['./node_modules/jquery-hoverintent/jquery.hoverIntent.js'],
|
||||
'build/wp-includes/js/imagesloaded.min.js': ['./node_modules/imagesloaded/imagesloaded.pkgd.min.js'],
|
||||
'build/wp-includes/js/jquery/jquery-migrate.js': ['./node_modules/jquery-migrate/dist/jquery-migrate.js'],
|
||||
'build/wp-includes/js/jquery/jquery-migrate.min.js': ['./node_modules/jquery-migrate/dist/jquery-migrate.min.js'],
|
||||
'build/wp-includes/js/jquery/jquery.form.js': ['./node_modules/jquery-form/src/jquery.form.js'],
|
||||
'build/wp-includes/js/jquery/jquery.form.min.js': ['./node_modules/jquery-form/dist/jquery.form.min.js'],
|
||||
'build/wp-includes/js/jquery/jquery.js': ['./node_modules/jquery/dist/jquery.min.js'],
|
||||
'build/wp-includes/js/masonry.min.js': ['./node_modules/masonry-layout/dist/masonry.pkgd.min.js'],
|
||||
'build/wp-includes/js/twemoji.js': ['./node_modules/twemoji/2/twemoji.js'],
|
||||
'build/wp-includes/js/underscore.min.js': ['./node_modules/underscore/underscore-min.js']
|
||||
}
|
||||
},
|
||||
'vendor-js': {
|
||||
files: [
|
||||
{
|
||||
expand: true,
|
||||
cwd: SOURCE_DIR + 'js/_enqueues/vendor/',
|
||||
src: [
|
||||
'**/*',
|
||||
'!farbtastic.js',
|
||||
'!iris.min.js',
|
||||
'!deprecated/**',
|
||||
'!README.md',
|
||||
// Ignore unminified version of vendor lib we don't ship.
|
||||
'!jquery/jquery.masonry.js',
|
||||
'!tinymce/tinymce.js'
|
||||
],
|
||||
dest: 'build/wp-includes/js/'
|
||||
},
|
||||
{
|
||||
expand: true,
|
||||
cwd: SOURCE_DIR + 'js/_enqueues/vendor/',
|
||||
src: [
|
||||
'farbtastic.js',
|
||||
'iris.min.js'
|
||||
],
|
||||
dest: 'build/wp-admin/js/'
|
||||
},
|
||||
{
|
||||
expand: true,
|
||||
cwd: SOURCE_DIR + 'js/_enqueues/vendor/deprecated',
|
||||
src: [
|
||||
'suggest*'
|
||||
],
|
||||
dest: 'build/wp-includes/js/jquery/'
|
||||
}
|
||||
]
|
||||
},
|
||||
'admin-js': {
|
||||
files: {
|
||||
'build/wp-admin/js/accordion.js': ['./src/js/_enqueues/lib/accordion.js'],
|
||||
'build/wp-admin/js/code-editor.js': ['./src/js/_enqueues/wp/code-editor.js'],
|
||||
'build/wp-admin/js/color-picker.js': ['./src/js/_enqueues/lib/color-picker.js'],
|
||||
'build/wp-admin/js/comment.js': ['./src/js/_enqueues/admin/comment.js'],
|
||||
'build/wp-admin/js/common.js': ['./src/js/_enqueues/admin/common.js'],
|
||||
'build/wp-admin/js/custom-background.js': ['./src/js/_enqueues/admin/custom-background.js'],
|
||||
'build/wp-admin/js/custom-header.js': ['./src/js/_enqueues/admin/custom-header.js'],
|
||||
'build/wp-admin/js/customize-controls.js': ['./src/js/_enqueues/wp/customize/controls.js'],
|
||||
'build/wp-admin/js/customize-nav-menus.js': ['./src/js/_enqueues/wp/customize/nav-menus.js'],
|
||||
'build/wp-admin/js/customize-widgets.js': ['./src/js/_enqueues/wp/customize/widgets.js'],
|
||||
'build/wp-admin/js/dashboard.js': ['./src/js/_enqueues/wp/dashboard.js'],
|
||||
'build/wp-admin/js/edit-comments.js': ['./src/js/_enqueues/admin/edit-comments.js'],
|
||||
'build/wp-admin/js/editor-expand.js': ['./src/js/_enqueues/wp/editor/dfw.js'],
|
||||
'build/wp-admin/js/editor.js': ['./src/js/_enqueues/wp/editor/base.js'],
|
||||
'build/wp-admin/js/gallery.js': ['./src/js/_enqueues/lib/gallery.js'],
|
||||
'build/wp-admin/js/image-edit.js': ['./src/js/_enqueues/lib/image-edit.js'],
|
||||
'build/wp-admin/js/inline-edit-post.js': ['./src/js/_enqueues/admin/inline-edit-post.js'],
|
||||
'build/wp-admin/js/inline-edit-tax.js': ['./src/js/_enqueues/admin/inline-edit-tax.js'],
|
||||
'build/wp-admin/js/language-chooser.js': ['./src/js/_enqueues/lib/language-chooser.js'],
|
||||
'build/wp-admin/js/link.js': ['./src/js/_enqueues/admin/link.js'],
|
||||
'build/wp-admin/js/media-gallery.js': ['./src/js/_enqueues/deprecated/media-gallery.js'],
|
||||
'build/wp-admin/js/media-upload.js': ['./src/js/_enqueues/admin/media-upload.js'],
|
||||
'build/wp-admin/js/media.js': ['./src/js/_enqueues/admin/media.js'],
|
||||
'build/wp-admin/js/nav-menu.js': ['./src/js/_enqueues/lib/nav-menu.js'],
|
||||
'build/wp-admin/js/password-strength-meter.js': ['./src/js/_enqueues/wp/password-strength-meter.js'],
|
||||
'build/wp-admin/js/plugin-install.js': ['./src/js/_enqueues/admin/plugin-install.js'],
|
||||
'build/wp-admin/js/post.js': ['./src/js/_enqueues/admin/post.js'],
|
||||
'build/wp-admin/js/postbox.js': ['./src/js/_enqueues/admin/postbox.js'],
|
||||
'build/wp-admin/js/revisions.js': ['./src/js/_enqueues/wp/revisions.js'],
|
||||
'build/wp-admin/js/set-post-thumbnail.js': ['./src/js/_enqueues/admin/set-post-thumbnail.js'],
|
||||
'build/wp-admin/js/svg-painter.js': ['./src/js/_enqueues/wp/svg-painter.js'],
|
||||
'build/wp-admin/js/tags-box.js': ['./src/js/_enqueues/admin/tags-box.js'],
|
||||
'build/wp-admin/js/tags-suggest.js': ['./src/js/_enqueues/admin/tags-suggest.js'],
|
||||
'build/wp-admin/js/tags.js': ['./src/js/_enqueues/admin/tags.js'],
|
||||
'build/wp-admin/js/theme-plugin-editor.js': ['./src/js/_enqueues/wp/theme-plugin-editor.js'],
|
||||
'build/wp-admin/js/theme.js': ['./src/js/_enqueues/wp/theme.js'],
|
||||
'build/wp-admin/js/updates.js': ['./src/js/_enqueues/wp/updates.js'],
|
||||
'build/wp-admin/js/user-profile.js': ['./src/js/_enqueues/admin/user-profile.js'],
|
||||
'build/wp-admin/js/user-suggest.js': ['./src/js/_enqueues/lib/user-suggest.js'],
|
||||
'build/wp-admin/js/widgets/custom-html-widgets.js': ['./src/js/_enqueues/wp/widgets/custom-html.js'],
|
||||
'build/wp-admin/js/widgets/media-audio-widget.js': ['./src/js/_enqueues/wp/widgets/media-audio.js'],
|
||||
'build/wp-admin/js/widgets/media-gallery-widget.js': ['./src/js/_enqueues/wp/widgets/media-gallery.js'],
|
||||
'build/wp-admin/js/widgets/media-image-widget.js': ['./src/js/_enqueues/wp/widgets/media-image.js'],
|
||||
'build/wp-admin/js/widgets/media-video-widget.js': ['./src/js/_enqueues/wp/widgets/media-video.js'],
|
||||
'build/wp-admin/js/widgets/media-widgets.js': ['./src/js/_enqueues/wp/widgets/media.js'],
|
||||
'build/wp-admin/js/widgets/text-widgets.js': ['./src/js/_enqueues/wp/widgets/text.js'],
|
||||
'build/wp-admin/js/widgets.js': ['./src/js/_enqueues/admin/widgets.js'],
|
||||
'build/wp-admin/js/word-count.js': ['./src/js/_enqueues/wp/utils/word-count.js'],
|
||||
'build/wp-admin/js/wp-fullscreen-stub.js': ['./src/js/_enqueues/deprecated/fullscreen-stub.js'],
|
||||
'build/wp-admin/js/xfn.js': ['./src/js/_enqueues/admin/xfn.js']
|
||||
}
|
||||
},
|
||||
'includes-js': {
|
||||
files: {
|
||||
'build/wp-includes/js/admin-bar.js': ['./src/js/_enqueues/lib/admin-bar.js'],
|
||||
'build/wp-includes/js/api-request.js': ['./src/js/_enqueues/wp/api-request.js'],
|
||||
'build/wp-includes/js/autosave.js': ['./src/js/_enqueues/wp/autosave.js'],
|
||||
'build/wp-includes/js/comment-reply.js': ['./src/js/_enqueues/lib/comment-reply.js'],
|
||||
'build/wp-includes/js/customize-base.js': ['./src/js/_enqueues/wp/customize/base.js'],
|
||||
'build/wp-includes/js/customize-loader.js': ['./src/js/_enqueues/wp/customize/loader.js'],
|
||||
'build/wp-includes/js/customize-models.js': ['./src/js/_enqueues/wp/customize/models.js'],
|
||||
'build/wp-includes/js/customize-preview-nav-menus.js': ['./src/js/_enqueues/wp/customize/preview-nav-menus.js'],
|
||||
'build/wp-includes/js/customize-preview-widgets.js': ['./src/js/_enqueues/wp/customize/preview-widgets.js'],
|
||||
'build/wp-includes/js/customize-preview.js': ['./src/js/_enqueues/wp/customize/preview.js'],
|
||||
'build/wp-includes/js/customize-selective-refresh.js': ['./src/js/_enqueues/wp/customize/selective-refresh.js'],
|
||||
'build/wp-includes/js/customize-views.js': ['./src/js/_enqueues/wp/customize/views.js'],
|
||||
'build/wp-includes/js/heartbeat.js': ['./src/js/_enqueues/wp/heartbeat.js'],
|
||||
'build/wp-includes/js/mce-view.js': ['./src/js/_enqueues/wp/mce-view.js'],
|
||||
'build/wp-includes/js/media-editor.js': ['./src/js/_enqueues/wp/media/editor.js'],
|
||||
'build/wp-includes/js/quicktags.js': ['./src/js/_enqueues/lib/quicktags.js'],
|
||||
'build/wp-includes/js/shortcode.js': ['./src/js/_enqueues/wp/shortcode.js'],
|
||||
'build/wp-includes/js/utils.js': ['./src/js/_enqueues/lib/cookies.js'],
|
||||
'build/wp-includes/js/wp-a11y.js': ['./src/js/_enqueues/wp/a11y.js'],
|
||||
'build/wp-includes/js/wp-ajax-response.js': ['./src/js/_enqueues/lib/ajax-response.js'],
|
||||
'build/wp-includes/js/wp-api.js': ['./src/js/_enqueues/wp/api.js'],
|
||||
'build/wp-includes/js/wp-auth-check.js': ['./src/js/_enqueues/lib/auth-check.js'],
|
||||
'build/wp-includes/js/wp-backbone.js': ['./src/js/_enqueues/wp/backbone.js'],
|
||||
'build/wp-includes/js/wp-custom-header.js': ['./src/js/_enqueues/wp/custom-header.js'],
|
||||
'build/wp-includes/js/wp-embed-template.js': ['./src/js/_enqueues/lib/embed-template.js'],
|
||||
'build/wp-includes/js/wp-embed.js': ['./src/js/_enqueues/wp/embed.js'],
|
||||
'build/wp-includes/js/wp-emoji-loader.js': ['./src/js/_enqueues/lib/emoji-loader.js'],
|
||||
'build/wp-includes/js/wp-emoji.js': ['./src/js/_enqueues/wp/emoji.js'],
|
||||
'build/wp-includes/js/wp-list-revisions.js': ['./src/js/_enqueues/lib/list-revisions.js'],
|
||||
'build/wp-includes/js/wp-lists.js': ['./src/js/_enqueues/lib/lists.js'],
|
||||
'build/wp-includes/js/wp-pointer.js': ['./src/js/_enqueues/lib/pointer.js'],
|
||||
'build/wp-includes/js/wp-sanitize.js': ['./src/js/_enqueues/wp/sanitize.js'],
|
||||
'build/wp-includes/js/wp-util.js': ['./src/js/_enqueues/wp/util.js'],
|
||||
'build/wp-includes/js/wpdialog.js': ['./src/js/_enqueues/lib/dialog.js'],
|
||||
'build/wp-includes/js/wplink.js': ['./src/js/_enqueues/lib/link.js'],
|
||||
'build/wp-includes/js/zxcvbn-async.js': ['./src/js/_enqueues/lib/zxcvbn-async.js']
|
||||
}
|
||||
},
|
||||
'wp-admin-css-compat-rtl': {
|
||||
options: {
|
||||
processContent: function( src ) {
|
||||
@ -169,12 +326,15 @@ module.exports = function(grunt) {
|
||||
dest: BUILD_DIR,
|
||||
src: []
|
||||
},
|
||||
'dynamic-js': {
|
||||
files: {}
|
||||
},
|
||||
qunit: {
|
||||
src: 'tests/qunit/index.html',
|
||||
dest: 'tests/qunit/compiled.html',
|
||||
options: {
|
||||
processContent: function( src ) {
|
||||
return src.replace( /(\".+?\/)src(\/.+?)(?:.min)?(.js\")/g , function( match, $1, $2, $3 ) {
|
||||
return src.replace( /(\".+?\/)build(\/.+?)(?:.min)?(.js\")/g , function( match, $1, $2, $3 ) {
|
||||
// Don't add `.min` to files that don't have it.
|
||||
return $1 + 'build' + $2 + ( /jquery$/.test( $2 ) ? '' : '.min' ) + $3;
|
||||
} );
|
||||
@ -200,7 +360,7 @@ module.exports = function(grunt) {
|
||||
},
|
||||
core: {
|
||||
expand: true,
|
||||
cwd: SOURCE_DIR,
|
||||
cwd: BUILD_DIR,
|
||||
dest: BUILD_DIR,
|
||||
ext: '.min.css',
|
||||
src: [
|
||||
@ -343,38 +503,16 @@ module.exports = function(grunt) {
|
||||
},
|
||||
media: {
|
||||
src: [
|
||||
SOURCE_DIR + 'wp-includes/js/media/**/*.js'
|
||||
SOURCE_DIR + 'js/media/**/*.js'
|
||||
]
|
||||
},
|
||||
core: {
|
||||
expand: true,
|
||||
cwd: SOURCE_DIR,
|
||||
src: [
|
||||
'wp-admin/js/**/*.js',
|
||||
'wp-includes/js/*.js',
|
||||
// Built scripts.
|
||||
'!wp-includes/js/media-*',
|
||||
// WordPress scripts inside directories
|
||||
'wp-includes/js/jquery/jquery.table-hotkeys.js',
|
||||
'wp-includes/js/mediaelement/mediaelement-migrate.js',
|
||||
'wp-includes/js/mediaelement/wp-mediaelement.js',
|
||||
'wp-includes/js/mediaelement/wp-playlist.js',
|
||||
'wp-includes/js/plupload/handlers.js',
|
||||
'wp-includes/js/plupload/wp-plupload.js',
|
||||
'wp-includes/js/tinymce/plugins/wordpress/plugin.js',
|
||||
'wp-includes/js/tinymce/plugins/wp*/plugin.js',
|
||||
'js/_enqueues/**/*.js',
|
||||
// Third party scripts
|
||||
'!wp-includes/js/codemirror/*.js',
|
||||
'!wp-admin/js/farbtastic.js',
|
||||
'!wp-includes/js/backbone*.js',
|
||||
'!wp-includes/js/swfobject.js',
|
||||
'!wp-includes/js/underscore*.js',
|
||||
'!wp-includes/js/colorpicker.js',
|
||||
'!wp-includes/js/hoverIntent.js',
|
||||
'!wp-includes/js/json2.js',
|
||||
'!wp-includes/js/tw-sack.js',
|
||||
'!wp-includes/js/twemoji.js',
|
||||
'!**/*.min.js'
|
||||
'!js/_enqueues/vendor/**/*.js'
|
||||
],
|
||||
// Remove once other JSHint errors are resolved
|
||||
options: {
|
||||
@ -487,7 +625,7 @@ module.exports = function(grunt) {
|
||||
},
|
||||
core: {
|
||||
expand: true,
|
||||
cwd: SOURCE_DIR,
|
||||
cwd: BUILD_DIR,
|
||||
dest: BUILD_DIR,
|
||||
ext: '.min.js',
|
||||
src: [
|
||||
@ -501,14 +639,10 @@ module.exports = function(grunt) {
|
||||
'wp-includes/js/tinymce/plugins/wp*/plugin.js',
|
||||
|
||||
// Exceptions
|
||||
'!**/*.min.js',
|
||||
'!wp-admin/js/custom-header.js', // Why? We should minify this.
|
||||
'!wp-admin/js/farbtastic.js',
|
||||
'!wp-admin/js/iris.min.js',
|
||||
'!wp-includes/js/backbone.*',
|
||||
'!wp-includes/js/masonry.min.js',
|
||||
'!wp-includes/js/swfobject.js',
|
||||
'!wp-includes/js/underscore.*',
|
||||
'!wp-includes/js/zxcvbn.min.js',
|
||||
'!wp-includes/js/wp-embed.js' // We have extra options for this, see uglify:embed
|
||||
]
|
||||
},
|
||||
@ -519,45 +653,32 @@ module.exports = function(grunt) {
|
||||
}
|
||||
},
|
||||
expand: true,
|
||||
cwd: SOURCE_DIR,
|
||||
cwd: BUILD_DIR,
|
||||
dest: BUILD_DIR,
|
||||
ext: '.min.js',
|
||||
src: ['wp-includes/js/wp-embed.js']
|
||||
},
|
||||
media: {
|
||||
expand: true,
|
||||
cwd: SOURCE_DIR,
|
||||
dest: BUILD_DIR,
|
||||
ext: '.min.js',
|
||||
src: [
|
||||
'wp-includes/js/media-audiovideo.js',
|
||||
'wp-includes/js/media-grid.js',
|
||||
'wp-includes/js/media-models.js',
|
||||
'wp-includes/js/media-views.js'
|
||||
]
|
||||
},
|
||||
jqueryui: {
|
||||
options: {
|
||||
// Preserve comments that start with a bang.
|
||||
preserveComments: /^!/
|
||||
},
|
||||
expand: true,
|
||||
cwd: SOURCE_DIR,
|
||||
dest: BUILD_DIR,
|
||||
cwd: 'node_modules/jquery-ui/ui/',
|
||||
dest: BUILD_DIR + 'wp-includes/js/jquery/ui/',
|
||||
ext: '.min.js',
|
||||
src: ['wp-includes/js/jquery/ui/*.js']
|
||||
},
|
||||
masonry: {
|
||||
options: {
|
||||
// Preserve comments that start with a bang.
|
||||
preserveComments: /^!/
|
||||
},
|
||||
src: SOURCE_DIR + 'wp-includes/js/jquery/jquery.masonry.js',
|
||||
dest: SOURCE_DIR + 'wp-includes/js/jquery/jquery.masonry.min.js'
|
||||
src: ['*.js']
|
||||
},
|
||||
imgareaselect: {
|
||||
src: SOURCE_DIR + 'wp-includes/js/imgareaselect/jquery.imgareaselect.js',
|
||||
dest: SOURCE_DIR + 'wp-includes/js/imgareaselect/jquery.imgareaselect.min.js'
|
||||
src: BUILD_DIR + 'wp-includes/js/imgareaselect/jquery.imgareaselect.js',
|
||||
dest: BUILD_DIR + 'wp-includes/js/imgareaselect/jquery.imgareaselect.min.js'
|
||||
},
|
||||
dynamic: {
|
||||
expand: true,
|
||||
cwd: BUILD_DIR,
|
||||
dest: BUILD_DIR,
|
||||
ext: '.min.js',
|
||||
src: []
|
||||
}
|
||||
},
|
||||
webpack: {
|
||||
@ -603,6 +724,195 @@ module.exports = function(grunt) {
|
||||
dest: BUILD_DIR + 'wp-includes/js/tinymce/wp-tinymce.js.gz'
|
||||
}
|
||||
},
|
||||
patch:{
|
||||
options: {
|
||||
file_mappings: {
|
||||
'src/wp-admin/js/accordion.js': 'src/js/_enqueues/lib/accordion.js',
|
||||
'src/wp-admin/js/code-editor.js': 'src/js/_enqueues/wp/code-editor.js',
|
||||
'src/wp-admin/js/color-picker.js': 'src/js/_enqueues/lib/color-picker.js',
|
||||
'src/wp-admin/js/comment.js': 'src/js/_enqueues/admin/comment.js',
|
||||
'src/wp-admin/js/common.js': 'src/js/_enqueues/admin/common.js',
|
||||
'src/wp-admin/js/custom-background.js': 'src/js/_enqueues/admin/custom-background.js',
|
||||
'src/wp-admin/js/custom-header.js': 'src/js/_enqueues/admin/custom-header.js',
|
||||
'src/wp-admin/js/customize-controls.js': 'src/js/_enqueues/wp/customize/controls.js',
|
||||
'src/wp-admin/js/customize-nav-menus.js': 'src/js/_enqueues/wp/customize/nav-menus.js',
|
||||
'src/wp-admin/js/customize-widgets.js': 'src/js/_enqueues/wp/customize/widgets.js',
|
||||
'src/wp-admin/js/dashboard.js': 'src/js/_enqueues/wp/dashboard.js',
|
||||
'src/wp-admin/js/edit-comments.js': 'src/js/_enqueues/admin/edit-comments.js',
|
||||
'src/wp-admin/js/editor-expand.js': 'src/js/_enqueues/wp/editor/dfw.js',
|
||||
'src/wp-admin/js/editor.js': 'src/js/_enqueues/wp/editor/base.js',
|
||||
'src/wp-admin/js/gallery.js': 'src/js/_enqueues/lib/gallery.js',
|
||||
'src/wp-admin/js/image-edit.js': 'src/js/_enqueues/lib/image-edit.js',
|
||||
'src/wp-admin/js/inline-edit-post.js': 'src/js/_enqueues/admin/inline-edit-post.js',
|
||||
'src/wp-admin/js/inline-edit-tax.js': 'src/js/_enqueues/admin/inline-edit-tax.js',
|
||||
'src/wp-admin/js/language-chooser.js': 'src/js/_enqueues/lib/language-chooser.js',
|
||||
'src/wp-admin/js/link.js': 'src/js/_enqueues/admin/link.js',
|
||||
'src/wp-admin/js/media-gallery.js': 'src/js/_enqueues/deprecated/media-gallery.js',
|
||||
'src/wp-admin/js/media-upload.js': 'src/js/_enqueues/admin/media-upload.js',
|
||||
'src/wp-admin/js/media.js': 'src/js/_enqueues/admin/media.js',
|
||||
'src/wp-admin/js/nav-menu.js': 'src/js/_enqueues/lib/nav-menu.js',
|
||||
'src/wp-admin/js/password-strength-meter.js': 'src/js/_enqueues/wp/password-strength-meter.js',
|
||||
'src/wp-admin/js/plugin-install.js': 'src/js/_enqueues/admin/plugin-install.js',
|
||||
'src/wp-admin/js/post.js': 'src/js/_enqueues/admin/post.js',
|
||||
'src/wp-admin/js/postbox.js': 'src/js/_enqueues/admin/postbox.js',
|
||||
'src/wp-admin/js/revisions.js': 'src/js/_enqueues/wp/revisions.js',
|
||||
'src/wp-admin/js/set-post-thumbnail.js': 'src/js/_enqueues/admin/set-post-thumbnail.js',
|
||||
'src/wp-admin/js/svg-painter.js': 'src/js/_enqueues/wp/svg-painter.js',
|
||||
'src/wp-admin/js/tags-box.js': 'src/js/_enqueues/admin/tags-box.js',
|
||||
'src/wp-admin/js/tags-suggest.js': 'src/js/_enqueues/admin/tags-suggest.js',
|
||||
'src/wp-admin/js/tags.js': 'src/js/_enqueues/admin/tags.js',
|
||||
'src/wp-admin/js/theme-plugin-editor.js': 'src/js/_enqueues/wp/theme-plugin-editor.js',
|
||||
'src/wp-admin/js/theme.js': 'src/js/_enqueues/wp/theme.js',
|
||||
'src/wp-admin/js/updates.js': 'src/js/_enqueues/wp/updates.js',
|
||||
'src/wp-admin/js/user-profile.js': 'src/js/_enqueues/admin/user-profile.js',
|
||||
'src/wp-admin/js/user-suggest.js': 'src/js/_enqueues/lib/user-suggest.js',
|
||||
'src/wp-admin/js/widgets/custom-html-widgets.js': 'src/js/_enqueues/wp/widgets/custom-html.js',
|
||||
'src/wp-admin/js/widgets/media-audio-widget.js': 'src/js/_enqueues/wp/widgets/media-audio.js',
|
||||
'src/wp-admin/js/widgets/media-gallery-widget.js': 'src/js/_enqueues/wp/widgets/media-gallery.js',
|
||||
'src/wp-admin/js/widgets/media-image-widget.js': 'src/js/_enqueues/wp/widgets/media-image.js',
|
||||
'src/wp-admin/js/widgets/media-video-widget.js': 'src/js/_enqueues/wp/widgets/media-video.js',
|
||||
'src/wp-admin/js/widgets/media-widgets.js': 'src/js/_enqueues/wp/widgets/media.js',
|
||||
'src/wp-admin/js/widgets/text-widgets.js': 'src/js/_enqueues/wp/widgets/text.js',
|
||||
'src/wp-admin/js/widgets.js': 'src/js/_enqueues/admin/widgets.js',
|
||||
'src/wp-admin/js/word-count.js': 'src/js/_enqueues/wp/utils/word-count.js',
|
||||
'src/wp-admin/js/wp-fullscreen-stub.js': 'src/js/_enqueues/deprecated/fullscreen-stub.js',
|
||||
'src/wp-admin/js/xfn.js': 'src/js/_enqueues/admin/xfn.js',
|
||||
'src/wp-includes/js/admin-bar.js': 'src/js/_enqueues/lib/admin-bar.js',
|
||||
'src/wp-includes/js/api-request.js': 'src/js/_enqueues/wp/api-request.js',
|
||||
'src/wp-includes/js/autosave.js': 'src/js/_enqueues/wp/autosave.js',
|
||||
'src/wp-includes/js/comment-reply.js': 'src/js/_enqueues/lib/comment-reply.js',
|
||||
'src/wp-includes/js/customize-base.js': 'src/js/_enqueues/wp/customize/base.js',
|
||||
'src/wp-includes/js/customize-loader.js': 'src/js/_enqueues/wp/customize/loader.js',
|
||||
'src/wp-includes/js/customize-models.js': 'src/js/_enqueues/wp/customize/models.js',
|
||||
'src/wp-includes/js/customize-preview-nav-menus.js': 'src/js/_enqueues/wp/customize/preview-nav-menus.js',
|
||||
'src/wp-includes/js/customize-preview-widgets.js': 'src/js/_enqueues/wp/customize/preview-widgets.js',
|
||||
'src/wp-includes/js/customize-preview.js': 'src/js/_enqueues/wp/customize/preview.js',
|
||||
'src/wp-includes/js/customize-selective-refresh.js': 'src/js/_enqueues/wp/customize/selective-refresh.js',
|
||||
'src/wp-includes/js/customize-views.js': 'src/js/_enqueues/wp/customize/views.js',
|
||||
'src/wp-includes/js/heartbeat.js': 'src/js/_enqueues/wp/heartbeat.js',
|
||||
'src/wp-includes/js/mce-view.js': 'src/js/_enqueues/wp/mce-view.js',
|
||||
'src/wp-includes/js/media-editor.js': 'src/js/_enqueues/wp/media/editor.js',
|
||||
'src/wp-includes/js/quicktags.js': 'src/js/_enqueues/lib/quicktags.js',
|
||||
'src/wp-includes/js/shortcode.js': 'src/js/_enqueues/wp/shortcode.js',
|
||||
'src/wp-includes/js/utils.js': 'src/js/_enqueues/lib/cookies.js',
|
||||
'src/wp-includes/js/wp-a11y.js': 'src/js/_enqueues/wp/a11y.js',
|
||||
'src/wp-includes/js/wp-ajax-response.js': 'src/js/_enqueues/lib/ajax-response.js',
|
||||
'src/wp-includes/js/wp-api.js': 'src/js/_enqueues/wp/api.js',
|
||||
'src/wp-includes/js/wp-auth-check.js': 'src/js/_enqueues/lib/auth-check.js',
|
||||
'src/wp-includes/js/wp-backbone.js': 'src/js/_enqueues/wp/backbone.js',
|
||||
'src/wp-includes/js/wp-custom-header.js': 'src/js/_enqueues/wp/custom-header.js',
|
||||
'src/wp-includes/js/wp-embed-template.js': 'src/js/_enqueues/lib/embed-template.js',
|
||||
'src/wp-includes/js/wp-embed.js': 'src/js/_enqueues/wp/embed.js',
|
||||
'src/wp-includes/js/wp-emoji-loader.js': 'src/js/_enqueues/lib/emoji-loader.js',
|
||||
'src/wp-includes/js/wp-emoji.js': 'src/js/_enqueues/wp/emoji.js',
|
||||
'src/wp-includes/js/wp-list-revisions.js': 'src/js/_enqueues/lib/list-revisions.js',
|
||||
'src/wp-includes/js/wp-lists.js': 'src/js/_enqueues/lib/lists.js',
|
||||
'src/wp-includes/js/wp-pointer.js': 'src/js/_enqueues/lib/pointer.js',
|
||||
'src/wp-includes/js/wp-sanitize.js': 'src/js/_enqueues/wp/sanitize.js',
|
||||
'src/wp-includes/js/wp-util.js': 'src/js/_enqueues/wp/util.js',
|
||||
'src/wp-includes/js/wpdialog.js': 'src/js/_enqueues/lib/dialog.js',
|
||||
'src/wp-includes/js/wplink.js': 'src/js/_enqueues/lib/link.js',
|
||||
'src/wp-includes/js/zxcvbn-async.js': 'src/js/_enqueues/lib/zxcvbn-async.js',
|
||||
'src/wp-includes/js/media/controllers/audio-details.js' : 'src/js/media/controllers/audio-details.js',
|
||||
'src/wp-includes/js/media/controllers/collection-add.js' : 'src/js/media/controllers/collection-add.js',
|
||||
'src/wp-includes/js/media/controllers/collection-edit.js' : 'src/js/media/controllers/collection-edit.js',
|
||||
'src/wp-includes/js/media/controllers/cropper.js' : 'src/js/media/controllers/cropper.js',
|
||||
'src/wp-includes/js/media/controllers/customize-image-cropper.js' : 'src/js/media/controllers/customize-image-cropper.js',
|
||||
'src/wp-includes/js/media/controllers/edit-attachment-metadata.js' : 'src/js/media/controllers/edit-attachment-metadata.js',
|
||||
'src/wp-includes/js/media/controllers/edit-image.js' : 'src/js/media/controllers/edit-image.js',
|
||||
'src/wp-includes/js/media/controllers/embed.js' : 'src/js/media/controllers/embed.js',
|
||||
'src/wp-includes/js/media/controllers/featured-image.js' : 'src/js/media/controllers/featured-image.js',
|
||||
'src/wp-includes/js/media/controllers/gallery-add.js' : 'src/js/media/controllers/gallery-add.js',
|
||||
'src/wp-includes/js/media/controllers/gallery-edit.js' : 'src/js/media/controllers/gallery-edit.js',
|
||||
'src/wp-includes/js/media/controllers/image-details.js' : 'src/js/media/controllers/image-details.js',
|
||||
'src/wp-includes/js/media/controllers/library.js' : 'src/js/media/controllers/library.js',
|
||||
'src/wp-includes/js/media/controllers/media-library.js' : 'src/js/media/controllers/media-library.js',
|
||||
'src/wp-includes/js/media/controllers/region.js' : 'src/js/media/controllers/region.js',
|
||||
'src/wp-includes/js/media/controllers/replace-image.js' : 'src/js/media/controllers/replace-image.js',
|
||||
'src/wp-includes/js/media/controllers/site-icon-cropper.js' : 'src/js/media/controllers/site-icon-cropper.js',
|
||||
'src/wp-includes/js/media/controllers/state-machine.js' : 'src/js/media/controllers/state-machine.js',
|
||||
'src/wp-includes/js/media/controllers/state.js' : 'src/js/media/controllers/state.js',
|
||||
'src/wp-includes/js/media/controllers/video-details.js' : 'src/js/media/controllers/video-details.js',
|
||||
'src/wp-includes/js/media/models/attachment.js' : 'src/js/media/models/attachment.js',
|
||||
'src/wp-includes/js/media/models/attachments.js' : 'src/js/media/models/attachments.js',
|
||||
'src/wp-includes/js/media/models/post-image.js' : 'src/js/media/models/post-image.js',
|
||||
'src/wp-includes/js/media/models/post-media.js' : 'src/js/media/models/post-media.js',
|
||||
'src/wp-includes/js/media/models/query.js' : 'src/js/media/models/query.js',
|
||||
'src/wp-includes/js/media/models/selection.js' : 'src/js/media/models/selection.js',
|
||||
'src/wp-includes/js/media/routers/manage.js' : 'src/js/media/routers/manage.js',
|
||||
'src/wp-includes/js/media/utils/selection-sync.js' : 'src/js/media/utils/selection-sync.js',
|
||||
'src/wp-includes/js/media/views/attachment-compat.js' : 'src/js/media/views/attachment-compat.js',
|
||||
'src/wp-includes/js/media/views/attachment-filters.js' : 'src/js/media/views/attachment-filters.js',
|
||||
'src/wp-includes/js/media/views/attachment-filters/all.js' : 'src/js/media/views/attachment-filters/all.js',
|
||||
'src/wp-includes/js/media/views/attachment-filters/date.js' : 'src/js/media/views/attachment-filters/date.js',
|
||||
'src/wp-includes/js/media/views/attachment-filters/uploaded.js' : 'src/js/media/views/attachment-filters/uploaded.js',
|
||||
'src/wp-includes/js/media/views/attachment.js' : 'src/js/media/views/attachment.js',
|
||||
'src/wp-includes/js/media/views/attachment/details-two-column.js' : 'src/js/media/views/details-two-column.js',
|
||||
'src/wp-includes/js/media/views/attachment/details.js' : 'src/js/media/views/details.js',
|
||||
'src/wp-includes/js/media/views/attachment/edit-library.js' : 'src/js/media/views/edit-library.js',
|
||||
'src/wp-includes/js/media/views/attachment/edit-selection.js' : 'src/js/media/views/edit-selection.js',
|
||||
'src/wp-includes/js/media/views/attachment/library.js' : 'src/js/media/views/library.js',
|
||||
'src/wp-includes/js/media/views/attachment/selection.js' : 'src/js/media/views/selection.js',
|
||||
'src/wp-includes/js/media/views/attachment/attachments.js' : 'src/js/media/views/attachments.js',
|
||||
'src/wp-includes/js/media/views/attachments/browser.js' : 'src/js/media/views/attachments/browser.js',
|
||||
'src/wp-includes/js/media/views/attachments/selection.js' : 'src/js/media/views/attachments/selection.js',
|
||||
'src/wp-includes/js/media/views/attachments/audio-details.js' : 'src/js/media/views/attachments/audio-details.js',
|
||||
'src/wp-includes/js/media/views/attachments/button-group.js' : 'src/js/media/views/attachments/button-group.js',
|
||||
'src/wp-includes/js/media/views/attachments/button.js' : 'src/js/media/views/attachments/button.js',
|
||||
'src/wp-includes/js/media/views/button/delete-selected-permanently.js' : 'src/js/media/views/button/delete-selected-permanently.js',
|
||||
'src/wp-includes/js/media/views/button/delete-selected.js' : 'src/js/media/views/button/delete-selected.js',
|
||||
'src/wp-includes/js/media/views/button/select-mode-toggle.js' : 'src/js/media/views/button/select-mode-toggle.js',
|
||||
'src/wp-includes/js/media/views/cropper.js' : 'src/js/media/views/cropper.js',
|
||||
'src/wp-includes/js/media/views/edit-image-details.js' : 'src/js/media/views/edit-image-details.js',
|
||||
'src/wp-includes/js/media/views/edit-image.js' : 'src/js/media/views/edit-image.js',
|
||||
'src/wp-includes/js/media/views/embed.js' : 'src/js/media/views/embed.js',
|
||||
'src/wp-includes/js/media/views/embed/image.js' : 'src/js/media/views/embed/image.js',
|
||||
'src/wp-includes/js/media/views/embed/link.js' : 'src/js/media/views/embed/link.js',
|
||||
'src/wp-includes/js/media/views/embed/url.js' : 'src/js/media/views/embed/url.js',
|
||||
'src/wp-includes/js/media/views/focus-manager.js' : 'src/js/media/views/focus-manager.js',
|
||||
'src/wp-includes/js/media/views/frame.js' : 'src/js/media/views/frame.js',
|
||||
'src/wp-includes/js/media/views/frame/audio-details.js' : 'src/js/media/views/frame/audio-details.js',
|
||||
'src/wp-includes/js/media/views/frame/edit-attachments.js' : 'src/js/media/views/frame/edit-attachments.js',
|
||||
'src/wp-includes/js/media/views/frame/image-details.js' : 'src/js/media/views/frame/image-details.js',
|
||||
'src/wp-includes/js/media/views/frame/manage.js' : 'src/js/media/views/frame/manage.js',
|
||||
'src/wp-includes/js/media/views/frame/media-details.js' : 'src/js/media/views/frame/media-details.js',
|
||||
'src/wp-includes/js/media/views/frame/post.js' : 'src/js/media/views/frame/post.js',
|
||||
'src/wp-includes/js/media/views/frame/select.js' : 'src/js/media/views/frame/select.js',
|
||||
'src/wp-includes/js/media/views/frame/video-details.js' : 'src/js/media/views/frame/video-details.js',
|
||||
'src/wp-includes/js/media/views/iframe.js' : 'src/js/media/views/iframe.js',
|
||||
'src/wp-includes/js/media/views/image-details.js' : 'src/js/media/views/image-details.js',
|
||||
'src/wp-includes/js/media/views/label.js' : 'src/js/media/views/label.js',
|
||||
'src/wp-includes/js/media/views/media-details.js' : 'src/js/media/views/media-details.js',
|
||||
'src/wp-includes/js/media/views/media-frame.js' : 'src/js/media/views/media-frame.js',
|
||||
'src/wp-includes/js/media/views/menu-item.js' : 'src/js/media/views/menu-item.js',
|
||||
'src/wp-includes/js/media/views/menu.js' : 'src/js/media/views/menu.js',
|
||||
'src/wp-includes/js/media/views/modal.js' : 'src/js/media/views/modal.js',
|
||||
'src/wp-includes/js/media/views/priority-list.js' : 'src/js/media/views/priority-list.js',
|
||||
'src/wp-includes/js/media/views/router-item.js' : 'src/js/media/views/router-item.js',
|
||||
'src/wp-includes/js/media/views/router.js' : 'src/js/media/views/router.js',
|
||||
'src/wp-includes/js/media/views/search.js' : 'src/js/media/views/search.js',
|
||||
'src/wp-includes/js/media/views/selection.js' : 'src/js/media/views/selection.js',
|
||||
'src/wp-includes/js/media/views/settings.js' : 'src/js/media/views/settings.js',
|
||||
'src/wp-includes/js/media/views/settings/attachment-display.js' : 'src/js/media/views/settings/attachment-display.js',
|
||||
'src/wp-includes/js/media/views/settings/gallery.js' : 'src/js/media/views/settings/gallery.js',
|
||||
'src/wp-includes/js/media/views/settings/playlist.js' : 'src/js/media/views/settings/playlist.js',
|
||||
'src/wp-includes/js/media/views/sidebar.js' : 'src/js/media/views/sidebar.js',
|
||||
'src/wp-includes/js/media/views/site-icon-cropper.js' : 'src/js/media/views/site-icon-cropper.js',
|
||||
'src/wp-includes/js/media/views/site-icon-preview.js' : 'src/js/media/views/site-icon-preview.js',
|
||||
'src/wp-includes/js/media/views/spinner.js' : 'src/js/media/views/spinner.js',
|
||||
'src/wp-includes/js/media/views/toolbar.js' : 'src/js/media/views/toolbar.js',
|
||||
'src/wp-includes/js/media/views/toolbar/embed.js' : 'src/js/media/views/toolbar/embed.js',
|
||||
'src/wp-includes/js/media/views/toolbar/select.js' : 'src/js/media/views/toolbar/select.js',
|
||||
'src/wp-includes/js/media/views/uploader/editor.js' : 'src/js/media/views/uploader/editor.js',
|
||||
'src/wp-includes/js/media/views/uploader/inline.js' : 'src/js/media/views/uploader/inline.js',
|
||||
'src/wp-includes/js/media/views/uploader/status-error.js' : 'src/js/media/views/uploader/status-error.js',
|
||||
'src/wp-includes/js/media/views/uploader/status.js' : 'src/js/media/views/uploader/status.js',
|
||||
'src/wp-includes/js/media/views/uploader/window.js' : 'src/js/media/views/uploader/window.js',
|
||||
'src/wp-includes/js/media/views/video-details.js' : 'src/js/media/views/video-details.js',
|
||||
'src/wp-includes/js/media/views/view.js' : 'src/js/media/views/view.js'
|
||||
}
|
||||
}
|
||||
},
|
||||
jsvalidate:{
|
||||
options: {
|
||||
globals: {},
|
||||
@ -616,6 +926,11 @@ module.exports = function(grunt) {
|
||||
BUILD_DIR + 'wp-content/themes/twenty*/**/*.js'
|
||||
]
|
||||
}
|
||||
},
|
||||
dynamic: {
|
||||
files: {
|
||||
src: []
|
||||
}
|
||||
}
|
||||
},
|
||||
imagemin: {
|
||||
@ -717,7 +1032,7 @@ module.exports = function(grunt) {
|
||||
all: {
|
||||
files: [
|
||||
SOURCE_DIR + '**',
|
||||
'!' + SOURCE_DIR + 'wp-includes/js/media/**',
|
||||
'!' + SOURCE_DIR + 'js/**/*.js',
|
||||
// Ignore version control directories.
|
||||
'!' + SOURCE_DIR + '**/.{svn,git}/**'
|
||||
],
|
||||
@ -728,6 +1043,28 @@ module.exports = function(grunt) {
|
||||
interval: 2000
|
||||
}
|
||||
},
|
||||
'js-enqueues': {
|
||||
files: [SOURCE_DIR + 'js/_enqueues/**/*.js'],
|
||||
tasks: ['clean:dynamic', 'copy:dynamic-js', 'uglify:dynamic', 'jsvalidate:dynamic'],
|
||||
options: {
|
||||
dot: true,
|
||||
spawn: false,
|
||||
interval: 2000
|
||||
}
|
||||
},
|
||||
'js-webpack': {
|
||||
files: [
|
||||
SOURCE_DIR + 'js/**/*.js',
|
||||
'!' + SOURCE_DIR + 'js/_enqueues/**/*.js',
|
||||
'webpack-dev.config.js'
|
||||
],
|
||||
tasks: ['clean:dynamic', 'webpack:dev', 'uglify:dynamic', 'jsvalidate:dynamic'],
|
||||
options: {
|
||||
dot: true,
|
||||
spawn: false,
|
||||
interval: 2000
|
||||
}
|
||||
},
|
||||
config: {
|
||||
files: [
|
||||
'Gruntfile.js',
|
||||
@ -802,8 +1139,7 @@ module.exports = function(grunt) {
|
||||
|
||||
grunt.registerTask( 'watch', function() {
|
||||
if ( ! this.args.length || this.args.indexOf( 'webpack' ) > -1 ) {
|
||||
|
||||
grunt.task.run( 'webpack:dev' );
|
||||
grunt.task.run( 'build' );
|
||||
}
|
||||
|
||||
grunt.task.run( '_' + this.nameArgs );
|
||||
@ -816,7 +1152,6 @@ module.exports = function(grunt) {
|
||||
grunt.registerTask( 'precommit:js', [
|
||||
'webpack:prod',
|
||||
'jshint:corejs',
|
||||
'uglify:masonry',
|
||||
'uglify:imgareaselect',
|
||||
'qunit:compiled'
|
||||
] );
|
||||
@ -925,27 +1260,57 @@ module.exports = function(grunt) {
|
||||
}
|
||||
} );
|
||||
|
||||
grunt.registerTask( 'copy:js', [
|
||||
'copy:npm-packages',
|
||||
'copy:vendor-js',
|
||||
'copy:admin-js',
|
||||
'copy:includes-js'
|
||||
] );
|
||||
|
||||
grunt.registerTask( 'uglify:all', [
|
||||
'uglify:core',
|
||||
'uglify:embed',
|
||||
'uglify:jqueryui',
|
||||
'uglify:imgareaselect'
|
||||
] );
|
||||
|
||||
grunt.registerTask( 'build:tinymce', [
|
||||
'concat:tinymce',
|
||||
'compress:tinymce',
|
||||
'clean:tinymce'
|
||||
] );
|
||||
|
||||
grunt.registerTask( 'build:js', [
|
||||
'clean:js',
|
||||
'webpack:dev',
|
||||
'copy:js',
|
||||
'file_append',
|
||||
'uglify:all',
|
||||
'build:tinymce',
|
||||
'concat:emoji',
|
||||
'jsvalidate:build'
|
||||
] );
|
||||
|
||||
grunt.registerTask( 'copy:all', [
|
||||
'copy:files',
|
||||
'copy:wp-admin-css-compat-rtl',
|
||||
'copy:wp-admin-css-compat-min',
|
||||
'copy:version'
|
||||
'copy:version',
|
||||
'copy:js'
|
||||
] );
|
||||
|
||||
grunt.registerTask( 'build', [
|
||||
'clean:all',
|
||||
'webpack:dev',
|
||||
'copy:all',
|
||||
'file_append',
|
||||
'cssmin:core',
|
||||
'colors',
|
||||
'rtl',
|
||||
'cssmin:rtl',
|
||||
'cssmin:colors',
|
||||
'uglify:core',
|
||||
'uglify:embed',
|
||||
'uglify:jqueryui',
|
||||
'concat:tinymce',
|
||||
'compress:tinymce',
|
||||
'clean:tinymce',
|
||||
'uglify:all',
|
||||
'build:tinymce',
|
||||
'concat:emoji',
|
||||
'includes:emoji',
|
||||
'includes:embed',
|
||||
@ -994,17 +1359,84 @@ module.exports = function(grunt) {
|
||||
grunt.event.on('watch', function( action, filepath, target ) {
|
||||
var src;
|
||||
|
||||
if ( [ 'all', 'rtl', 'webpack' ].indexOf( target ) === -1 ) {
|
||||
// Only configure the dynamic tasks based on known targets.
|
||||
if ( [ 'all', 'rtl', 'webpack', 'js-enqueues', 'js-webpack' ].indexOf( target ) === -1 ) {
|
||||
return;
|
||||
}
|
||||
|
||||
src = [ path.relative( SOURCE_DIR, filepath ) ];
|
||||
// If the target is a file in the restructured js src.
|
||||
if ( target === 'js-enqueues' ) {
|
||||
var files = {};
|
||||
var configs, dest;
|
||||
|
||||
// If it's a vendor file which are configured with glob matchers.
|
||||
if ( filepath.indexOf( SOURCE_DIR + 'js/_enqueues/vendor/' ) === 0 ) {
|
||||
// Grab the glob matchers from the copy task.
|
||||
configs = grunt.config( [ 'copy', 'vendor-js', 'files' ] );
|
||||
|
||||
// For each glob matcher check if it matches and if so set the variables for our dynamic tasks.
|
||||
for ( var i = 0; i < configs.length; i++ ) {
|
||||
var config = configs[ i ];
|
||||
var relative = path.relative( config.cwd, filepath );
|
||||
var minimatch = require('minimatch');
|
||||
|
||||
if ( minimatch.match( config.src, relative, {} ) ) {
|
||||
dest = config.dest + relative;
|
||||
src = [ path.relative( BUILD_DIR, dest ) ];
|
||||
files[ dest ] = [ filepath ];
|
||||
break;
|
||||
}
|
||||
}
|
||||
// Or if it's another file which has a straight mapping.
|
||||
} else {
|
||||
configs = Object.assign( {},
|
||||
grunt.config( [ 'copy', 'admin-js', 'files' ] ),
|
||||
grunt.config( [ 'copy', 'includes-js', 'files' ] )
|
||||
);
|
||||
for ( dest in configs ) {
|
||||
// If a file in the mapping matches then set the variables for our dynamic tasks.
|
||||
if ( configs.hasOwnProperty( dest ) && configs[ dest ][0] === './' + filepath ) {
|
||||
files[ dest ] = configs[ dest ];
|
||||
src = [ path.relative( BUILD_DIR, dest ) ];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Configure our dynamic-js copy task which uses a file mapping rather than simply copying from src to build.
|
||||
if ( action !== 'deleted' ) {
|
||||
grunt.config( [ 'copy', 'dynamic-js', 'files' ], files );
|
||||
}
|
||||
// For the webpack builds configure the jsvalidate task to only check those files build by webpack.
|
||||
} else if ( target === 'js-webpack' ) {
|
||||
src = [
|
||||
'wp-includes/js/media-audiovideo.js',
|
||||
'wp-includes/js/media-grid.js',
|
||||
'wp-includes/js/media-models.js',
|
||||
'wp-includes/js/media-views.js'
|
||||
];
|
||||
// Else simply use the path relative to the source directory.
|
||||
} else {
|
||||
src = [ path.relative( SOURCE_DIR, filepath ) ];
|
||||
}
|
||||
|
||||
if ( action === 'deleted' ) {
|
||||
// Clean up only those files that were deleted.
|
||||
grunt.config( [ 'clean', 'dynamic', 'src' ], src );
|
||||
} else {
|
||||
// Otherwise copy over only the changed file.
|
||||
grunt.config( [ 'copy', 'dynamic', 'src' ], src );
|
||||
|
||||
// For javascript also minify and validate the changed file.
|
||||
if ( target === 'js-enqueues' ) {
|
||||
grunt.config( [ 'uglify', 'dynamic', 'src' ], src );
|
||||
grunt.config( [ 'jsvalidate', 'dynamic', 'files', 'src' ], src.map( function( dir ) { return BUILD_DIR + dir; } ) );
|
||||
}
|
||||
// For webpack only validate the file, minification is handled by webpack itself.
|
||||
if ( target === 'js-webpack' ) {
|
||||
grunt.config( [ 'jsvalidate', 'dynamic', 'files', 'src' ], src.map( function( dir ) { return BUILD_DIR + dir; } ) );
|
||||
}
|
||||
// For css run the rtl task on just the changed file.
|
||||
if ( target === 'rtl' ) {
|
||||
grunt.config( [ 'rtlcss', 'dynamic', 'src' ], src );
|
||||
}
|
||||
|
11730
package-lock.json
generated
Normal file
14
package.json
@ -25,6 +25,7 @@
|
||||
"grunt-contrib-qunit": "^1.2.0",
|
||||
"grunt-contrib-uglify": "~2.0.0",
|
||||
"grunt-contrib-watch": "~1.0.0",
|
||||
"grunt-file-append": "0.0.7",
|
||||
"grunt-includes": "~0.5.1",
|
||||
"grunt-jsdoc": "^2.1.0",
|
||||
"grunt-jsvalidate": "~0.2.2",
|
||||
@ -36,8 +37,21 @@
|
||||
"grunt-sass": "2.0.0",
|
||||
"grunt-webpack": "^3.0.2",
|
||||
"ink-docstrap": "^1.3.0",
|
||||
"jquery-migrate": "1.4.1",
|
||||
"matchdep": "~1.0.0",
|
||||
"webpack": "^3.6.0",
|
||||
"webpack-dev-server": "^2.9.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"backbone": "1.3.3",
|
||||
"imagesloaded": "3.2.0",
|
||||
"jquery": "1.12.4",
|
||||
"jquery-color": "github:jquery/jquery-color#2.1.1",
|
||||
"jquery-form": "4.2.1",
|
||||
"jquery-hoverintent": "1.8.3",
|
||||
"jquery-ui": "github:jquery/jquery-ui#1.11.4",
|
||||
"masonry-layout": "3.3.2",
|
||||
"twemoji": "2.5.1",
|
||||
"underscore": "1.8.3"
|
||||
}
|
||||
}
|
||||
|
17
src/_index.php
Normal file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
/**
|
||||
* Front to the WordPress application. This file doesn't do anything, but loads
|
||||
* wp-blog-header.php which does and tells WordPress to load the theme.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tells WordPress to load the WordPress theme and output it.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
define( 'WP_USE_THEMES', true );
|
||||
|
||||
/** Loads the WordPress Environment and Template */
|
||||
require( dirname( __FILE__ ) . '/wp-blog-header.php' );
|
@ -1,17 +1,49 @@
|
||||
<?php
|
||||
/**
|
||||
* Front to the WordPress application. This file doesn't do anything, but loads
|
||||
* wp-blog-header.php which does and tells WordPress to load the theme.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tells WordPress to load the WordPress theme and output it.
|
||||
*
|
||||
* @var bool
|
||||
* Note: this file exists only to remind developers to run WordPress from the
|
||||
* build directory. For the real index.php that gets built and boots WordPress,
|
||||
* please refer to _index.php.
|
||||
*/
|
||||
define( 'WP_USE_THEMES', true );
|
||||
|
||||
/** Loads the WordPress Environment and Template */
|
||||
require( dirname( __FILE__ ) . '/wp-blog-header.php' );
|
||||
/** Define ABSPATH as this file's directory */
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
define( 'ABSPATH', dirname( __FILE__ ) . '/' );
|
||||
}
|
||||
|
||||
define( 'WPINC', 'wp-includes' );
|
||||
require_once( ABSPATH . WPINC . '/load.php' );
|
||||
|
||||
// Standardize $_SERVER variables across setups.
|
||||
wp_fix_server_vars();
|
||||
|
||||
require_once( ABSPATH . WPINC . '/functions.php' );
|
||||
define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' );
|
||||
require_once( ABSPATH . WPINC . '/version.php' );
|
||||
|
||||
wp_check_php_mysql_versions();
|
||||
wp_load_translations_early();
|
||||
|
||||
// Die with an error message
|
||||
$die = sprintf(
|
||||
/* translators: %1$s: WordPress, %2$s: src, %3$s: build */
|
||||
__( 'You seem to be running %1$s from the %2$s directory. %1$s needs to be built and run from the %3$s directory before we can get started.' ),
|
||||
'WordPress',
|
||||
'<code>src</code>',
|
||||
'<code>build</code>'
|
||||
) . '</p>';
|
||||
$die .= '<p>' . sprintf(
|
||||
/* translators: %s: WordPress */
|
||||
__( 'You can build %s by running:' ),
|
||||
'WordPress'
|
||||
) . '</p>';
|
||||
$die .= '<p><code>npm install && grunt build</code></p>';
|
||||
$die .= '<p>' . sprintf(
|
||||
/* translators: %1$s: NPM URL, %2$s: Grunt URL */
|
||||
__( 'This requires <a href="%1$s">NPM</a> and <a href="%2$s">Grunt</a>. <a href="%3$s">Read more about setting up your local development environment</a>.' ),
|
||||
'https://www.npmjs.com/',
|
||||
'https://gruntjs.com/',
|
||||
__( 'https://codex.wordpress.org/' )
|
||||
) . '</p>';
|
||||
|
||||
wp_die( $die, __( 'WordPress › Error' ) );
|
34
src/js/_enqueues/vendor/README.md
vendored
Normal file
@ -0,0 +1,34 @@
|
||||
# src/js/enqueues/vendor
|
||||
|
||||
In this directory you'll find vendor JavaScript packages that cannot be installed through NPM, but are included in WordPress. Below we've documented the sources for those packages.
|
||||
|
||||
## Folder dependencies
|
||||
|
||||
- codemirror: https://github.com/codemirror/CodeMirror
|
||||
- crop: http://www.defusion.org.uk/code/javascript-image-cropper-ui-using-prototype-scriptaculous/download-zip/
|
||||
- imgareaselect: https://github.com/odyniec/imgareaselect
|
||||
- jcrop: https://github.com/tapmodo/Jcrop
|
||||
- mediaelement: https://github.com/mediaelement/mediaelement
|
||||
- plupload: https://github.com/moxiecode/plupload
|
||||
- swfupload: https://github.com/WordPress/secure-swfupload
|
||||
- thickbox: http://codylindley.com/thickbox/
|
||||
- tinymce: https://github.com/tinymce/tinymce
|
||||
|
||||
## Single file dependencies
|
||||
|
||||
- colorpicker: http://www.mattkruse.com/javascript/colorpicker/
|
||||
- deprecated/suggest: Patched by Mark Jaquith with Alexander Dick's "multiple items" patch to allow for auto-suggesting of more than one tag before submitting. See documentation in `suggest.js`.
|
||||
- farbtastic: https://github.com/mattfarina/farbtastic
|
||||
- iris: https://github.com/Automattic/Iris
|
||||
- json2: https://github.com/douglascrockford/JSON-js
|
||||
- jquery/jquery.color: https://github.com/jquery/jquery-color. Package is on NPM but not published by maintainer.
|
||||
- jquery/jquery.hotkeys: https://github.com/tzuryby/jquery.hotkeys
|
||||
- jquery/jquery.masonry: Old version for BC purposes, can't include two versions with NPM. The newer version is included through NPM and built to `wp-includes/js/masonry.min.js`
|
||||
- jquery/jquery.query: https://github.com/blairmitchelmore/jquery.plugins/blob/master/jquery.query.js
|
||||
- jquery/jquery.schedule: https://github.com/rse/jquery-schedule
|
||||
- jquery/jquery.serializeobject: https://github.com/cowboy/jquery-misc/blob/master/jquery.ba-serializeobject.js
|
||||
- jquery/jquery.table-hotkeys: WP version can be downloaded at https://code.google.com/archive/p/js-hotkeys/downloads?page=2. A newer version is available at https://github.com/jeresig/jquery.hotkeys.
|
||||
- jquery/jquery.ui.touch-punch.js https://github.com/furf/jquery-ui-touch-punch/blob/master/jquery.ui.touch-punch.js
|
||||
- swfobject: https://github.com/swfobject/swfobject
|
||||
- tw-sack: https://github.com/abritinthebay/simpleajaxcodekit
|
||||
- zxcvbn: https://github.com/dropbox/zxcvbn cannot automatically be installed as the frequency lists need to be manually ROT13 transformed.
|
Before Width: | Height: | Size: 277 B After Width: | Height: | Size: 277 B |
Before Width: | Height: | Size: 293 B After Width: | Height: | Size: 293 B |
Before Width: | Height: | Size: 178 B After Width: | Height: | Size: 178 B |
Before Width: | Height: | Size: 178 B After Width: | Height: | Size: 178 B |
Before Width: | Height: | Size: 323 B After Width: | Height: | Size: 323 B |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.5 KiB |