I found that i made a mistake about loading mechanism. Prototype related luas that add contents should be put in data.lua, and those who modify contents should be in data-updates.lua, so they can work better with other mods that make thorough changes.
e.g. -- data.lua
require("prototypes.item.alien-module")
require("prototypes.item-group.item-groups-module")
require("prototypes.recipe.alien-module")
-- data-updates.lua
others