# App Migrations
Any plugin and the Nodepack service can register one or more app migrations. An app migration should have both a up
code and a down
code. Those codes can modify project source code by adding, editing or deleting files, as well as installing new dependencies in your project package.json
. By default the maintenances applying or rollbacking app migrations will commit your app code state with Git commit so that your work won't be accidentally altered or removed.
For example, adding the official Typescript plugin with nodepack add typescript
in the project will execute an app migration that will:
- generate the
tsconfig.json
andtslint.json
files in the root folder - rename
.js
files in the source folder to.ts
files - add the
lint
script in thepackage.json
file for running TSLint
Each migration has an id and is only applied once on a project, unless it's rollbacked. Records of applied app migrations are kept in the .nodepack
folder at the root of the project directory.
WARNING
You should make sure that the .nodepack
folder is commited into version control, or else other contributors may apply app migrations multiple times.
Prompts may be displayed to further customize the modification made to the project.
Here is an example of app migration happening while adding the official Typescript plugin:
nodepack add typescript
🚀 Migrating app code...
@nodepack/plugin-typescript is prompting:
? Use TSLint Yes
✔️ @nodepack/plugin-typescript Template: Render default template
📝 1 app migration applied!
🔧 Maintenance complete!
🎉 Successfully added @nodepack/plugin-typescript.
Note how at some point the app migration requested input from the user to ask if he wants to use TSLint.