Migrations are required when you want to add a new Solidity Contract to the blockchain. This is because you would be modifying the state of the blockchain.

Example

var TodoList = artifacts.require("./TodoList.sol")
 
module.exports = function(deployer){
  deployer.deploy(TodoList);
};