In Packwerk 3.0, we've made two notable changes:
The update-deprecations
subcommand has been renamed to update-todo
. Old deprecated_references.yml
files will be automatically deleted and replaced with package_todo.yml
files when you run update-todo
. This behaviour has been in Packwerk since 2.3.0, and automatic deletion will be removed in the next release.
Privacy checking via enforce_privacy
has been removed. Developers are encouraged to focus on leveraging Packwerk for dependency checking. For those who still need privacy checks, please use Gusto's extension gem.
With Packwerk 2.0, we made a few changes to simplify the setup. Updating will require removing some previously necessary files and configuration.
Because packwerk is no longer involved in specifying the application's inflections, it doesn't have to live in the production
group in your Gemfile
anymore. We recommend moving it to the development
group.
We no longer require the load_paths
key in packwerk.yml
. You can simply delete the load_paths key as it will not be read anymore. Instead, Packwerk will ask Rails for load paths. If you're using spring, make sure to properly set up spring (see USAGE.md) to keep packwerk fast.
We no longer require a custom inflections.yml
file. Instead, you'll want to revert BACK to using the inflections.rb
initializer as you would have done prior to adopting packwerk. To do this, you'll want to convert back to using the plain ActiveSupport Inflections API.
Given the following example inflections.yml
, here is an example inflections.rb
that would follow. Tip: if you're using git, you can run git log config/inflections.yml
, find the first commit that introduced inflections.yml
, find the COMMIT_SHA, and then run git show COMMIT_SHA
to see what your inflections file looked like before (note that you may have changed inflections.yml
since then, though).
config/inflections.yml
# List your inflections in this file instead of `inflections.rb`
# See steps to set up custom inflections:
# https://github.com/Shopify/packwerk/blob/main/USAGE.md#Inflections
acronym:
- 'HTML'
- 'API'
singular:
- ['oxen', 'oxen']
irregular:
- ['person', 'people']
uncountable:
- 'fish'
- 'sheep'
config/initializers/inflections.rb
ActiveSupport::Inflector.inflections(:en) do |inflect|
inflect.acronym('HTML')
inflect.acronym('API')
inflect.singular('oxen', 'oxen')
inflect.irregular('person', 'people')
inflect.uncountable('fish')
inflect.uncountable('sheep')
end