A fim de não ser salvo nenhuma tarefa vazia, criei essa condição onde o elemento só é gerado quando existe algum valor nele. Em JavaScript, caso a string seja null ou "" (vazia), ela é tida como falsa, logo ela não entra na condição. Criei um regex (Regular Expression) para substituir os espaços dados, tabs ou quebra de linhas ("/\s/g") por "". Então, caso uma string seja " ", ela virará "" e será falsa, não passando então pela condição.
const criarTarefa = (evento) => {
evento.preventDefault()
const input = document.querySelector('[data-form-input]')
const lista = document.querySelector('[data-list]')
const valor = input.value
if (valor.replace(/\s/g, '')) {
const tarefa = document.createElement('li')
tarefa.classList.add('task')
const content = `
<p class="content">${valor}</p>
`
tarefa.innerHTML = content
tarefa.appendChild(BotaoConclui())
tarefa.appendChild(BotaoRemover())
lista.appendChild(tarefa)
}
input.value = ""
}