add component.js support