automattic/jetpack-assets

Asset management utilities for Jetpack ecosystem packages

Installs: 258 676

Dependents: 11

Suggesters: 0

Security: 0

Stars: 1

Watchers: 2

Forks: 2

Type:jetpack-library


README

A package containing functionality to improve loading of assets (scripts, etc).

Includes manipulation of paths, enqueuing async scripts, and DNS resource hinting.

Usage

  • ::get_file_url_for_environment( $min_path, $non_min_path, $package_path ) -- This is similar to plugins_url(), but chooses between $min_path and $non_min_path based on the constant SCRIPT_DEBUG. The filter jetpack_get_file_for_environment may be used to control the returned URL.
  • ::add_resource_hint( $urls, $type ) -- Adds domains (string or array) to the WordPress' resource hinting. Accepts type of dns-prefetch (default), preconnect, prefetch, or prerender.
  • ::normalize_path( $path ) -- Normalize . and .. components in a path or URL.
  • ::register_script( $handle, $path, $relative_to, $options ) -- Register a Webpack bundled script and styles using data produced by @wordpress/dependency-extraction-webpack-plugin. This replaces reading the .asset.php file and then making calls to wp_register_script(), wp_register_style() (with a potentially varying filename based on is_rtl()), and wp_set_script_translations(). See the inline documentation for details.
  • ::enqueue_script( $handle ) -- Enqueue a script and style previously registered with ::register_script().
  • ::alias_textdomains_from_file( $file ) -- Use data recorded by automattic/jetpack-composer-plugin to enable use of translations for shared Composer libraries.
  • ::alias_textdomains( $from, $to, $totype, $ver ) -- Manually add a textdomain alias, if for some reason ::alias_textdomains_from_file() is insufficient.

The Assets package also provides a wp-jp-i18n-loader script to support Webpack lazy-loaded bundles using @automattic/i18n-loader-webpack-plugin. No initialization is required, other than calling ::alias_textdomains_from_file() or ::alias_textdomains() if said bundles are coming from shared Composer libraries.

Testing

$ composer run phpunit