Next steps
Now that you have applied all patches, you are ready to make last manual changes to your application. First, see the breaking changes list and make sure to fix them.
After that, here are some things you have to do:
Apply lint fixes
Since we have changed a lot of files using upgrade-kit
, you should run your linter/formatter to fix the files.
npm run lint -- --fix
Migrate the community packages
Migrate the community packages you are using. Some of them will probably have already been updated. So make sure to consult their respective documentation and changelog and migrate them.
Check the status of your config/*.ts
files
Check the state of your config/*.ts
files. It's more than likely that the upgrade-kit wasn't able to migrate some of them correctly. You'll have to update some of them manually, but this should be very quick. Make sure to consult the V6 documentation to see how to configure the packages.
Move the logger configuration
Earlier, we defined the logger configuration in config/app.ts
. We now have moved it to config/logger.ts
and changed its API.
See documentation and the web-starter-kit for an example.
Remove the profiler configuration
The profiler was never documented and is now removed. Remove the profiler configuration from config/app.ts
.
Remove the Assets bundler configuration
The assets bundler doesn't need any configuration anymore. Remove the assets bundler configuration from config/app.ts
.
Update your Exception Handler
Update your Exception Handler using the new API.
Update dynamic imports
Update all your dynamic imports ( await import('...')
) using ESM-friendly imports (e.g. file extensions), and using subpath imports.
Often, these imports are used in the commands you've created ( commands/*.ts
). Make sure you update them.
Remember to use the new subpath-imports, so if for example you had await import('App/Models/User')
, you can replace it with await import('#app/Models/User')
.
Update the tests/bootstrap.ts
file
Update the tests/bootstrap.ts
file using the new configuration system. Take the example of web-starter-kit
( Optional ) Migrate to the new Adonis 6 routing system
( Optional ) Migrate to the new Adonis 6 routing system. Remove all string-based routes and use real controller imports.
Update the start/kernel.ts
file
Update the start/kernel.ts
file using the new API.
Add container bindings middleware
Add the middleware container_bindings.ts
to the app/middleware
folder and also add it to the kernel. Again, use the web-starter-kit as an example.
Migrate the @adonisjs/auth middleware
( Optional ) Move contracts/_ files to config/_ files
With V5, we defined some typings on the contracts
folder. We now have moved them directly in the associated config
file. For example, the contracts/hash.ts
file on V5 looks like this:
import type { InferListFromConfig } from '@adonisjs/core/build/config'
import type hashConfig from '../config/hash'
declare module '@ioc:Adonis/Core/Hash' {
interface HashersList extends InferListFromConfig<typeof hashConfig> {}
}
Now, with V6, you could only have the config/hash.ts
file:
import { defineConfig, drivers } from '@adonisjs/core/hash'
const hashConfig = defineConfig({
default: 'scrypt',
list: {
scrypt: drivers.scrypt({
cost: 16384,
blockSize: 8,
parallelization: 1,
maxMemory: 33554432,
}),
},
})
export default hashConfig
/**
* Inferring types for the list of hashers you have configured
* in your application.
*/
declare module '@adonisjs/core/types' {
export interface HashersList extends InferHashers<typeof hashConfig> {}
}
Migrate edge breaking changes
AdonisJS 6 comes with a new version of Edge. See the Edge migration guide and update your views accordingly.
Webpack Encore
If you were using Webpack encore, we have created a @adonisjs/encore
package that adds support for Webpack Encore in AdonisJS 6. But we highly recommend you to migrate to Vite as soon as possible, see the migration guide.
If you want to stick with Webpack Encore for now, make sure to install @adonisjs/encore
and run the following command:
node ace configure @adonisjs/encore
Also make sure to rename your webpack.config.js
file to webpack.config.cjs
and also postcss.config.js
to postcss.config.cjs
.