JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://threejs.org/build/three.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/dat-gui/0.7.7/dat.gui.min.js"></script>
<canvas id="myCanvas"></canvas>

CSS

html, body {
  margin: 0px;
  padding: 0px;
}

JavaScript

var renderer = new THREE.WebGLRenderer({
  canvas: document.getElementById('myCanvas'),
  antialias: true
});
renderer.setClearColor(0x121212);
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(window.innerWidth, window.innerHeight);

var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.z = 5;

var sphere_geometry = new THREE.SphereGeometry(1, 128, 128);
var material = new THREE.MeshLambertMaterial({
  color: 0x2194ce,    // red (can also use a CSS color string here)
  flatShading: true,
  emissive: 0x0
});

var sphere = new THREE.Mesh(sphere_geometry, material);
scene.add(sphere);

var ambientLight = new THREE.AmbientLight( 0x000000 );
scene.add( ambientLight );

var lights = [];
lights[0] = new THREE.DirectionalLight( 0xffffff, 1, 0 );
lights[1] = new THREE.DirectionalLight( 0xffffff, 1, 0 );

lights[1].name = 'datLight';

lights[0].position.set( 0, 200, 0 );
lights[1].position.set( 200, 200, 100 );

scene.add( lights[0] );
scene.add( lights[1] );
      
window.onresize = resize;

var gui = new dat.GUI({ autoPlace: true });

gui.add(scene.getObjectByName('datLight').position, 'x', -200, 200).name("Light position");

var update = function() {

  var time = performance.now() * 0.003;

  //go through vertices here and reposition them 
  var k = 3;
  for (var i = 0; i < sphere.geometry.vertices.length; i++) {
    var p = sphere.geometry.vertices[i];
    p.normalize().multiplyScalar(1 + 0.3 * noise.perlin2(p.x * k + time, p.y * k, p.z * k));
  }
  sphere.geometry.normalsNeedUpdate = true;
  sphere.geometry.verticesNeedUpdate = true;
}

function resize() {

  var aspect = window.innerWidth / window.innerHeight;
  renderer.setSize(window.innerWidth, window.innerHeight);
  camera.aspect = aspect;
  camera.updateProjectionMatrix();
  //controls.handleResize();
}

function animate() {
  //sphere.rotation.x += 0.01;
  //sphere.rotation.y += 0.01;

  update();
  /*...