support custom moduleDir