Den 19-årige kallades in i Wales senior trupp för första gången för VM kval mot Serbien tidigare denna månad.
James är stadens sjätte signering av sommaren hittills.
Under tiden, försvarare Adam El-Abd, 32, har lämnat klubben efter hans kontrakt avslutades genom ömsesidig överenskommelse.
El-Abd blev klubbkapten förra säsongen, poäng två gånger i 34 framträdanden i alla tävlingar.
Hitta alla de senaste fotbollsöverföringarna på vår dedikerade sida.
League One Shrewsbury Town har signerat Daniel James från Premier League Swansea City på ett säsongslån.