Skip to content

Latest commit

 

History

History
429 lines (296 loc) · 35.3 KB

CHANGELOG.md

File metadata and controls

429 lines (296 loc) · 35.3 KB

next branch is for v8 changes

Versions

Changes since the last non-beta release.

Changed

  • Changed internal requires to require_relative to make code less dependent on the load path. PR 516 by tagliala.
  • Allow configuring webpack from a Typescript file (config/webpack/webpack.config.ts). PR 524 by jdelStrother.

Fixed

  • Fix error when rails environment is required from outside the rails root directory PR 520

v8.0.2 - August 28, 2024

Fixed

v8.0.1 - July 10, 2024

Changed

Fixed

  • Fixes failing tests for Ruby 2.7 due to Rack::Handler::Puma.respond_to?(:config) PR 501 by adriangohjw

  • Improve documentation for using Yarn PnP PR 484 by G-Rath.

  • Remove old yarn bin script PR 483 by G-Rath.

v8.0.0 - May 17, 2024

See the v8 Upgrade Guide.

Fixed

Breaking changes

  • Removes CDN url from the manifest.json paths. PR 473 by tomdracz. This returns to the Webpacker behaviour prior to the aborted Webpacker v6.

  • Remove relative_url_root PR 413 by G-Rath.

  • Removes deprecated support of Webpacker spelling, config variables and constants. PR 429 by tomdracz.

    The usage of those has been deprecated in Shakapacker v7 and now fully removed in v8. See the v7 Upgrade Guide for more information if you are still yet to address this deprecation.

  • Remove globalMutableWebpackConfig global PR 439 by G-Rath.

    Use generateWebpackConfig instead.

  • Use package_json gem to manage Node dependencies and commands, and use npm by default PR 430 by G-Rath

    This enables support for package managers other than yarn, with npm being the default; to continue using Yarn, specify it in package.json using the packageManager property.

    This also removed @node_modules_bin_path, SHAKAPACKER_NODE_MODULES_BIN_PATH, and support for installing Shakapacker's javascript package in a separate directory from the Gemfile containing Shakapacker's ruby gem.

  • Remove yarn_install rake task, and stop installing js packages automatically as part of assets:precompile PR 412 by G-Rath.

  • Remove check_yarn rake task PR 443 by G-Rath.

  • Remove https option for webpack-dev-server PR 414 by G-Rath.

  • Remove verify_file_existance method PR 446 by G-Rath.

  • Drop support for Ruby 2.6 PR 415 by G-Rath.

  • Drop support for Node v12 PR 431 by G-Rath.

  • Enable ensure_consistent_versioning by default PR 447 by G-Rath.

  • Asset files put in additional_paths will have their path stripped just like with the source_path. PR 403 by paypro-leon.

  • Remove isArray utility (just use Array.isArray directly) and renamed a few files PR 454 by G-Rath.

  • Make JavaScript test helper utilities internal (chdirTestApp, chdirCwd, resetEnv) PR 458 by G-Rath.

v7.2.3 - March 23, 2024

Added

  • Emit warnings instead of errors when compilation is success but stderr is not empty. PR 416 by n-rodriguez.
  • Allow webpack-dev-server v5. PR 418 by G-Rath

Removed

Fixed

  • Uses config file passed in SHAKAPACKER_CONFIG consistently.PR 448 by tomdracz.

    Previously this could have been ignored in few code branches, especially when checking for available environments.

v7.2.2 - January 19, 2024

Added

v7.2.1 - December 30, 2023

Fixed

  • Show deprecation message for relative_url_root only if it is set. PR 400 by ahangarha.

v7.2.0 - December 28, 2023

Added

  • Experimental support for other JS package managers using package_json gem PR 349 by G-Rath.
  • Support hmr: only configuration PR 378 by SimenB.
  • Use config/shakapacker.yml as the secondary source for asset_host and relative_url_root configurations PR 376 by ahangarha.

Fixed

  • Recommend server option instead of the deprecated https option when --https is provided PR 380 by G-Rath
  • Recompile assets on asset host change PR 364 by ahangarha.
  • Add deprecation warning for https option in shakapacker.yml (use server: 'https' instead) PR 382 by G-Rath.
  • Disable Hot Module Replacement in webpack-dev-server when hmr: false PR 392 by thedanbob.

Deprecated

  • The usage of relative_url_root is deprecated in Shakapacker and will be removed in v8. PR 376 by ahangarha.

v7.1.0 - September 30, 2023

Added

  • Support passing custom webpack config directly to generateWebpackConfig for merging PR 343 by G-Rath.

Fixed

  • Use NODE_OPTIONS to enable Node-specific debugging flags PR 350.
  • Add the boilerplate application.js into packs/ PR 363.

v7.0.3 - July 7, 2023

Fixed

  • Fixed commands execution for projects with space in the absolute path PR 322 by kukicola.

v7.0.2 - July 3, 2023

Fixed

  • Fixed creation of assets:precompile if it is missing PR 325 by ahangarha.

v7.0.1 - June 27, 2023

Fixed

  • Fixed the condition for showing warning for setting useContentHash to false in the production environment. PR 320 by ahangarha.

v7.0.0 - June 23, 2023

Breaking changes

  • Removes defaults passed to @babel/preset-typescript. PR 273 by tomdracz.

    @babel/preset-typescript has been initialised in default configuration with { allExtensions: true, isTSX: true } - meaning every file in the codebase was treated as TSX leading to potential issues. This has been removed and returns to sensible default of the preset which is to figure out the file type from the extensions. This change might affect generated output however so it is marked as breaking.

  • Export immutable webpackConfig function. PR 293 by tomdracz.

    The webpackConfig property in the shakapacker module has been updated to be a function instead of a global mutable webpack configuration. This function now returns an immutable webpack configuration object, which ensures that any modifications made to it will not affect any other usage of the webpack configuration. If a project still requires the old mutable object, it can be accessed by replacing webpackConfig with globalMutableWebpackConfig. Check v7-upgrade documentation for more detail.

Added

  • Set CSS modules mode depending on file type. PR 261 by talyuk.
  • All standard webpack entries with the camelCase format are now supported in shakapacker.yml in snake_case format. PR276 by ahangarha.
  • The shakapacker:install rake task now has an option to force overriding files using FORCE=true environment variable PR311 by ahangarha.
  • Allow configuration of use of contentHash for specific environment PR 234 by justin808.

Changed

  • Rename Webpacker to Shakapacker in the entire project including config files, binstubs, environment variables, etc. with a high degree of backward compatibility.

    This change might be breaking for certain setups and edge cases. More information: v7 Upgrade Guide PR157 by ahangarha

  • Set source_entry_path to packs and nested_entries to true inshakapacker.yml PR 284 by ahangarha.

  • Dev server configuration is modified to follow webpack recommended configurations for dev server. PR276 by ahangarha:

    • Deprecated https entry is removed from the default configuration file, allowing to set server or https as per the project requirements. For more detail, check webpack documentation. The https entry can be effective only if there is no server entry in the config file.
    • allowed_hosts is now set to auto instead of all by default.
  • Remove the arbitrary stripping of the top-level directory when generating static file paths. PR 283 by tomdracz.

    Prior to this change, top level directory of static assets like images and fonts was stripped. This meant that file in app/javascript/images/image.png would be output to static/image.png directory and could be referenced through helpers as image_pack_tag("image.jpg") or image_pack_tag("static/image.jpg").

    Going forward, the top level directory of static files will be retained so this will necessitate the update of file name references in asset helpers. In the example above, the file sourced from app/javascript/images/image.png will be now output to static/images/image.png and needs to be referenced as image_pack_tag("images/image.jpg") or image_pack_tag("static/images/image.jpg").

Fixed

  • Move compilation lock file into the working directory. PR 272 by tomdracz.

  • Process source_entry_path with values starting with / as a relative path to source_path PR 284 by ahangarha.

  • Removes defaults passed to @babel/preset-typescript to make it possible to have projects with mix of JS and TS code PR 273 by tomdracz.

    @babel/preset-typescript has been initialised in default configuration with { allExtensions: true, isTSX: true } - meaning every file in the codebase was treated as TSX leading to potential issues. This has been removed and returns to sensible default of the preset which is to figure out the file type from the extensions. This change might affect generated output however so it is marked as breaking.

  • Fixed RC version detection during installation. PR312 by ahangarha

  • Fix addition of webpack-dev-server to devDependencies during installation. PR310 by ahangarha

Removed

  • Remove redundant enhancement for precompile task to run yarn install PR 270 by ahangarha.
  • Remove deprecated check_yarn_integrity from Shakapacker::Configuration PR SP288 by ahangarha.

v6.6.0 - March 7, 2023

Improved

  • Allow configuration of webpacker.yml through env variable. PR 254 by alecslupu.

v6.5.6 - February 11, 2023

Fixed

  • Fixed failing to update bin/setup file due to different formats of the file in different versions of Rails. PR 229 by ahangarha.

  • Upgrade several JS dependencies to fix security issues. PR 243 by ahangarha.

  • Added prepend_javascript_pack_tag to helpers. Allows to move an entry to the top of queue. Handy when calling from the layout to make sure an entry goes before the view and partial append_javascript_pack_tag entries. PR 235 by paypro-leon.

  • Fixed issue to support directories under node_modules/* in the additional_paths property of webpacker.yml PR 240 by vaukalak.

  • Remove duplicate yarn installs. PR 238 by justin808.

  • Remove unneeded code related to CSP config for generator. PR 223 by ahangarha.

v6.5.5 - December 28, 2022

Improved

v6.5.4 - November 4, 2022

Fixed

  • Fixed regression caused by 6.5.3. PR #192 introduce extra split() call. PR 202 by Eric-Guo.

v6.5.3 - November 1, 2022

Improved

  • Set RAILS_ENV and BUNDLE_GEMFILE env values before requiring bundler/setup, webpacker, and webpacker/webpack_runner. PR 190 by betmenslido.
  • The mini-css-extract-plugin may cause various warnings indicating CSS order conflicts when using a File-System-based automated bundle generation feature. CSS order warnings can be disabled in projects where CSS ordering has been mitigated by consistent use of scoping or naming conventions. Added css_extract_ignore_order_warnings flag to webpacker configuration to disable the order warnings by pulkitkkr in PR 192.

v6.5.2 - September 8, 2022

Upgrade

Remove the setting of the NODE_ENV in your bin/webpacker and bin/webpacker-dev-server files per PR 185.

Fixed

  • Changed NODE_ENV defaults to the following and moved from binstubs to the runner. PR 185 by mage1711.
ENV["NODE_ENV"] ||= (ENV["RAILS_ENV"] == "production") ? "production" : "development"

v6.5.1 - August 15, 2022

Improved

  • Resolve exact npm package version from lockfiles for constraint checking. PR 170 by G-Rath.

Fixed

  • append_javascript_pack_tag and append_stylesheet_pack_tag helpers return nil to prevent rendering the queue into view when using <%= … %> ERB syntax. PR 167 by ur5us. While <%= should not be used, it's OK to return nil in case it's misused.
  • Fixed non-runnable test due to wrong code nesting. PR 173 by ur5us.
  • Fixed default configurations not working for custom Rails environments PR 168 by ur5us.
  • Added accessor method for nested_entries configuration. PR 176 by pulkitkkr.

v6.5.0 - July 4, 2022

Added

  • append_stylesheet_pack_tag helper. It helps in configuring stylesheet pack names from the view for a route or partials. It is also required for filesystem-based automated Component Registry API on React on Rails gem. PR 144 by pulkitkkr.

Improved

v6.4.1 - June 5, 2022

Fixed

  • Restores automatic installation of yarn packages removed in #131, with added deprecation notice. PR 140 by tomdracz.

    This will be again removed in Shakapacker v7 so you need to ensure you are installing yarn packages explicitly before the asset compilation, rather than relying on this behaviour through asset:precompile task (e.g. Capistrano deployment).

  • Disable Spring being used by rails-erb-loader. PR 141 by tomdracz.

v6.4.0 - June 2, 2022

Fixed

Added

  • Configuration boolean option nested_entries to use nested entries. This was the default prior to v6.0. Because entries maybe generated, it's useful to allow a generated subdirectory. PR 121 by justin808.

Improved

  • Allow v10 of compression-webpack-plugin as a peer dependency. PR 117 by aried3r.

  • Remove assets:precompile task enhancement #131 by James Herdman: Removed the yarn:install Rake task, and no longer enhance assets:precompile with said task. These tasks were used to ensure required NPM packages were installed before asset precompilation. Going forward you will need to ensure these packages are already installed yourself. Should you wish to restore this behaviour you'll need to reimplement the task in your own application.

v6.3.0 - May 19, 2022

Improved

  • Add ability to configure usage of either last modified timestamp and digest strategies when checking asset freshness. PR 112 by tomdracz.

Fixed

[v6.3.0-rc.1] - April 24, 2022

Note: Rubygem is 6.3.0.pre.rc.1 and NPM is 6.3.0-rc.1.

Changed

  • Remove Loose mode from the default @babel-preset/env configuration. PR 107 by Jeremy Liberman.

    Loose mode compiles the bundle down to be compatible with ES5, but saves space by skipping over behaviors that are considered edge cases. Loose mode can affect how your code runs in a variety of ways, but in newer versions of Babel it's better to use Compiler Assumptions to have finer-grained control over which edge cases you're choosing to ignore.

    This change may increase the file size of your bundles, and may change some behavior in your app if your code touches upon one of the edge cases where Loose mode differs from native JavaScript. There are notes in the linked PR about how to turn Loose mode back on if you need to, but consider migrating to Compiler Assumptions when you can. If you have already customized your babel config, this change probably won't affect you.

Added

  • Adds webpacker_precompile setting to webpacker.yml to allow controlling precompile behaviour, similar to existing ENV["WEBPACKER_PRECOMPILE"] variable. PR 102 by Judahmeek.
  • Adds append_javascript_pack_tag helper. Allows for easier usage and coordination of multiple javascript packs. PR 94 by tomdracz.

Improved

  • Use last modified timestamps rather than file digest to determine compiler freshness. PR 97 by tomdracz.

    Rather than calculating SHA digest of all the files in the paths watched by the compiler, we are now comparing the modified time of the manifest.json file versus the latest modified timestamp of files and directories in watched paths. Unlike calculating digest, which only looked at the files, the new calculation also considers directory timestamps, including the parent ones (i.e. config.source_path folder timestamp will be checked together will timestamps of all files and directories inside of it).

    This change should result in improved compiler checks performance but might be breaking for certain setups and edge cases. If you encounter any issues, please report them at https://github.com/shakacode/shakapacker/issues.

  • Bump dependency versions in package.json to address security vulnerabilities. PR 109 by tomdracz.

  • Add webpack-dev-server as peerDependency to make its usage clear. PR 109 by tomdracz.

v6.2.1 - April 15, 2022

Fixed

  • Put back config.public_manifest_path, removed in 6.2.0 in PR 78. PR 104 by justin808.

v6.2.0 - March 22, 2022

Added

  • Make manifest_path configurable, to keep manifest.json private if desired. PR 78 by jdelStrother.
  • Rewrite webpack module rules as regular expressions. Allows for easy iteration during config customization. PR 60 by blnoonan.
  • Initialization check to ensure shakapacker gem and NPM package version are consistent. Opt-in behaviour enabled by setting ensure_consistent_versioning configuration variable. PR 51 by tomdracz.
  • Add dev_server.inline_css: bool config option to allow for opting out of style-loader and into mini-css-extract-plugin for CSS HMR in development. PR 69 by cheald.

Improved

  • Increase default connect timeout for dev server connections, establishing connections more reliably for busy machines. PR 74 by stevecrozz.
  • Allow multiple invocations of stylesheet_pack_tag (eg for a regular stylesheet & a print stylesheet). PR 82 by jdelStrother.
  • Tweak swc config for parity with Babel. PR 79 by dleavitt.

v6.1.1 - February 6, 2022

Added

v6.1.0 - February 4, 2022

Added

Fixed

v6.0.2 - January 25, 2022

Improved

v6.0.1 - January 24, 2022

Improved

  • PR #21 removed pnp-webpack-plugin as a dev dependency but did not remove it from the peer dependency list. PR 30 by t27duck.

Improved

  • Raise on multiple invocations of javascript_pack_tag and stylesheet_pack_tag helpers. PR 19 by tomdracz.
  • Remove automatic addition of node_modules into rails asset load path. PR 20 by tomdracz.
  • Remove pnp-webpack-plugin. PR 21 by tomdracz.

Merged from rails/webpacker

Upgrading from rails/webpacker 6.0.0.rc.6

  • Single default configuration file of config/webpack/webpack.config.js. Previously, the config file was set to config/webpack/#{NODE_ENV}.js.
  • Changed all package.json dependencies to peerDependencies, so upgrading requires adding the dependencies, per the UPGRADE GUIDE.

v6.0.0.rc.6 changes from v5.4 - Forked January 16, 2022

  • node_modules will no longer be babel transformed compiled by default. This primarily fixes rails issue #35501 as well as numerous other webpacker issues. The disabled loader can still be required explicitly via:

    const nodeModules = require('@rails/webpacker/rules/node_modules.js')
    environment.loaders.append('nodeModules', nodeModules)
  • If you have added environment.loaders.delete('nodeModules') to your environment.js, this must be removed or you will receive an error (Item nodeModules not found).

  • extract_css option was removed. Webpacker will generate a separate application.css file for the default application pack, as supported by multiple files per entry introduced in 5.0.0. #2608. However, CSS will be inlined when the webpack-dev-server is used with hmr: true. JS package exports inliningCss. This is useful to enable HMR for React.

  • Webpacker's wrapper to the splitChunks() API will now default runtimeChunk: 'single' which will help prevent potential issues when using multiple entry points per page #2708.

  • Changes @babel/preset-env modules option to 'auto' per recommendation in the Babel docs #2709

  • Adds experimental Yarn 2 support. Note you must manually set nodeLinker: node-modules in your .yarnrc.yml.

  • Fixes dev server issues #2898

  • Update static files path to from media/ to static/.

  • Deprecated configuration option watched_paths. Use additional_paths instead in webpacker.yml.

Breaking changes

  • Renamed /bin/webpack to /bin/webpacker and /bin/webpack-dev-server to bin/webpacker-dev-server to avoid confusion with underlying webpack executables.
  • Removed integration installers
  • Splitchunks enabled by default
  • CSS extraction enabled by default, except when devServer is configured and running

v5.4.3 and prior changes from rails/webpacker

See CHANGELOG.md in rails/webpacker (up to v5.4.3)