Eu estava lutando com a mesma coisa no meu ambiente de desenvolvimento até perceber que nodemon
a API nos permite alterar seu comportamento padrão para executar um comando personalizado. Por exemplo:
nodemon --watch 'src/**/*.ts' --ignore 'src/**/*.spec.ts' --exec 'ts-node' src/index.ts
Ou melhor ainda: externalize a configuração do nodemon em um nodemon.json
arquivo com o seguinte conteúdo e depois execute nodemon
, como sugeriu Sandokan:
{ "watch": ["src/**/*.ts"], "ignore": ["src/**/*.spec.ts"], "exec": "ts-node ./index.ts" }
Em virtude disso, você poderá recarregar um ts-node
processo ao vivo sem precisar se preocupar com a implementação subjacente.
Felicidades!
Atualizado para a versão mais recente do nodemon:
Crie um nodemon.json
arquivo com o seguinte conteúdo.
{
"watch": ["src"],
"ext": "ts",
"ignore": ["src/**/*.spec.ts"],
"exec": "ts-node ./src/index.ts" // or "npx ts-node src/index.ts"
}
index.ts
é uma instância expressa, como eu posso matá-lo e reiniciar{ "watch": ["src/**/*.ts"], "ignore": ["src/**/*.spec.ts"], "exec": "ts-node ./app-server.ts" }
e apenas digitarnodemon
./
antes dos nomes das pastas e elas quebraram. Isso funcionou para mim:{ "verbose": true, "watch": ["server/**/*.ts"], "ext": "ts js json", "ignore": ["server/**/*.spec.ts"], "exec": "ts-node index.ts" }
. E linha de comando:nodemon --watch server/**/*.ts --ignore server/**/*.spec.ts --verbose --exec ts-node index.ts
ext
no arquivo de configuração, para que o seu procure por ts mude. Meu arquivo de configuração fica assim:{ "watch": ["src/**/*.ts"], "ignore": ["src/**/*.spec.ts"], "ext": "ts js json", "_exec": "node dist/startup.js", "exec": "ts-node src/startup.ts" }
Eu tenho jogado
nodemon
ets-node
em favor de uma alternativa muito melhor,ts-node-dev
https://github.com/whitecolor/ts-node-devApenas corra
ts-node-dev src/index.ts
fonte
tsc --watch
.nodemon
comts-node
. Obrigado!"start": "ts-node-dev src"
. Não há necessidade de babel, nodemon ou qualquer uma das configurações que o acompanham. Tudo é tratado para você.Aqui está uma alternativa à resposta do HeberLZ , usando scripts npm.
Meu
package.json
:-e
flag define as extensões a serem procuradas,-w
define o diretório monitorado,-x
executa o script.--inspect
nowatch:serve
script, na verdade, é um sinalizador node.js, apenas habilita o protocolo de depuração.fonte
ts-node --inspect -- src/index.ts
agora devido a isso .-e ts -w ./src
fiz o truque para mim - isso funcionou com um projeto gerado por loopback4 CLIEspecificamente para esse problema, criei a
tsc-watch
biblioteca. você pode encontrá-lo nas npm .Caso de uso óbvio seria:
tsc-watch server.ts --outDir ./dist --onSuccess "node ./dist/server.js"
fonte
"[...] similar to nodemon but for TypeCcript."
:)Isso funciona para mim:
Aparentemente, graças a essa solicitação de recebimento : https://github.com/remy/nodemon/pull/1552
fonte
ts-node
instalado.node_modules/
? Para mim, falha se não a tiver.ts-node
ser instalado. A execução deste comando semts-node
resultará emfailed to start process, "ts-node" exec not found
erro. Você provavelmente teve isso como um artefato restantenode_modules
. Dito isto, esta solução é muito melhor, pois não requer configuração adicional.Adicione
"watch": "nodemon --exec ts-node -- ./src/index.ts"
àscripts
seção do seupackage.json
.fonte
você poderia usar ts-node-dev
Ele reinicia o processo do nó de destino quando qualquer um dos arquivos necessários é alterado (como padrão node-dev), mas compartilha o processo de compilação Typcript entre as reinicializações.
Instalar
e seu package.json pode ser assim
fonte
eu fiz com
e início do fio .. ts-node não é como 'ts-node'
fonte
Eu preferiria não usar o ts-node e sempre executar a partir da pasta dist.
Para fazer isso, basta configurar o seu package.json com a configuração padrão:
e adicione o arquivo de configuração nodemon.json :
Aqui, eu uso "exec": "npm restart"
para que todo o arquivo ts seja compilado novamente no arquivo js e, em seguida, reinicie o servidor.
Para executar enquanto estiver no ambiente de desenvolvimento,
Usando esta configuração, sempre executarei a partir dos arquivos distribuídos e não haverá necessidade de ts-node.
fonte
adicione isso ao seu arquivo package.json
e para fazer isso funcionar, você também precisa instalar o ts-node como dependência de dev
execute
yarn dev
para iniciar o servidor devfonte