How to automatically reload Node.js project when using pm2

后端 未结 4 981
情深已故
情深已故 2021-02-02 10:58

I am currently programming Node.js with Express.js, and every time I change a line of code in the file router or app, I need to type the command:

pm2 reload id_         


        
相关标签:
4条回答
  • 2021-02-02 11:27

    By default, node doesn’t automatically refresh our server every time we change files. I don't know about specific pm2 solution, but you can do that with nodemon. Just install with: npm install -g nodemon and use with: nodemon server.js.

    Personally, it looks like @rogier-spieker answer should get the accepted answer. (I can't even delete this answer as long as it is the accepted answer)

    0 讨论(0)
  • 2021-02-02 11:30

    pm2 is a Node process manager that has lots of bells and whistles. you can run the below command to automatically restarting the node application when file changes in the directory are detected.

    pm2 start index.js --watch
    

    Note that because pm2 runs things in the background, you can’t just ctrl+c your way out of a running pm2 process. You have to stop it by passing the ID or the name.

    pm2 stop 0
    pm2 stop index
    

    other two options are below

    npx supervisor index.js
    nodemon index.js
    
    0 讨论(0)
  • 2021-02-02 11:49

    PM2 comes with a handy development tool that allow you to start an application and restart it on file change:

    # Start your application in development mode
    # it print the logs and restart on file change too
    
    # Two way of running your application :
    pm2-dev start my-app.js
    
    # or
    
    pm2-dev my-app.js
    
    0 讨论(0)
  • 2021-02-02 11:50

    You need to start your pm2 project with the --watch option:

    pm2 start <script|name|id> --watch
    

    Where <script|name|id> refers to:

    • script the path to the script you want to let pm2 handle
    • name the name of the configuration in the "ecosystem" file
    • id refers to an already running application using pm2, which can be obtained using pm2 list (note that this would actually require a restart instead of start, so it's probably the least desirable of the options)

    You could also specify which files/directories to ignore:

    pm2 start <script> --watch --ignore-watch "node_modules"
    

    Watch & Restart

    Or create an "ecosystem" json file describing how you want pm2 to treat your project:

    {
      "name": "project_name",
      "script": "index.js",
      "watch": true,
      "ignore_watch": ["node_modules"]
    }
    

    JSON options

    0 讨论(0)
提交回复
热议问题