work without npm