Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

nodemon not restarting after typescript change

My nodemon is not restarting after a typescript file change.

Currently I'm using the following to run and compile my changes:

"dev": "nodemon -e ts,json --exec \"npm run compile\"",
"compile": "tsc && node src/index.js"

it should detect ts changes and recompile however it's not.

It is running through a docker container linked with a volume, the code in volume should be watched.

docker-compose

version: '2'
services:
  api:
    build:
      context: ./api
    ports: ["5000:5000"]
    environment:
      - NODE_ENV=production 

the override:

version: '2'
services:
  api:
    command: yarn run dev
    volumes:
      - ./api/src:/usr/workspace/api/src      
    environment:      
      - NODE_ENV=dev   

The api has the following dockerfile

FROM node:latest

# Install yarn
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
  && echo "deb http://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list  && apt-get update && apt-get clean

# Set working dir and copy contents of our images to that dir  
RUN mkdir -p /usr/workspace/api && cd /usr/workspace/api

# install dependencies
COPY *.json /usr/workspace/api/
WORKDIR /usr/workspace/api

# npm install will check NODE_ENV if its production if will not install dev dependencies
RUN npm install --silent && npm install -g nodemon pm2 typescript --silent

# copy sources
COPY ./src ./src

# create env file with the port
ENV PORT 8100
EXPOSE $PORT

CMD ["pm2-docker", "src/process.json"]

as you can see, with the override i run the development environment instead of staging

i have tried turning the watch option to true in my tsconfig however then the code doesn't re run. when i change the nodemon options to watch js files as well it works, however it then constantly rebuilds because it detects js files change when it compiles.

any opinions?

like image 804
Maxim Avatar asked Mar 21 '17 21:03

Maxim


1 Answers

I have fixed this issue by adding the -L switch to nodemon. this apparently uses the legacy watch which worked on the docker container

"dev": "nodemon -L -e ts,json --exec \"npm run compile\"",
like image 151
Maxim Avatar answered Sep 18 '22 11:09

Maxim