Nodemon和Grunt-Contrib-Watch: 有什么不同?

在过去一个月,我一直使用Nodemongrunt-contrib-watch。这些都是很好的工具,我认为任何人使用NodeJS至少应该有这些在你的“我熟悉”类别(“I’m familiar with” )。但是因为我最近一直在使用这些工具,我一直问自己“为什么我使用这两个?为什么不坚持其中之一呢?“…和我坐在这里,思考我目前做的项目,想知道如果我可以切换到其中一个的一切,发现Nodemongrunt-contrib-watch的区别。

Nodemon

Nodemon的核心是一个命令行工具,它取代了标准的node命令行,目标是只要一个文件发生变化就重新启动node应用程序。在大多数情况下,你只是在命令行上将node替换为nodemon
这里写图片描述

Nodemon会开启一个正常的node进程并监视文件系统的变化。当nodemon监测到文件已经改变,nodemon将停止并重新启动node进程。这对搭建一个长时间运行的node app程序特别有用,像ExpressJS web应用程序一样,替代一直需要手动停止并重新启动服务器的操作,你就让nodemon帮你吧。

Nodemon让生活简单,文件发生变化的时候会重启你的node 进程。

Grunt-Contrib-Watch

这也是监测文件系统的变化的一个工具。但其并不是在文件系统发生变化的时候重新启动程序,它可以让你做许多其他的事情包括运行各种Grunt Tasks

在这个配置中,我监测 public/javascripts文件夹中JavaScript 文件的变化,然后运行jshint browserify任务。与grunt-contrib-watch还有其他事情可以做,但它的核心,也是它最好的,就是监测到文件变化的时候可以执行Grunt Tasks。

So, What’s The Difference?

真正的区别——Nodemon是旨在重启node process,而grunt-contrib-watch是运行一组特定的grunt tasks。是的,它们二者都是监测文件系统的变化并做一些作为回应,但作为回应,它们所做的就是二者真正的区别。我的应用程序同时使用nodemongrunt-contrib-watch因为他们提供两个不同的目的。当我改变ExpressJS app.js文件或我的一个路由处理程序,nodemon 会为我介入和重新启动应用程序。当我在相同的ExpressJS 应用程序的 public/ javascripts文件夹下修改JavaScript文件的时候,grunt-contrib-watch 介入并运行相关代码下我的所有任务。我对grunt-contrib-watch做更多的不仅仅是这一点,但我想,这很好地说明了它们的差异

Should I Use Both?

最后,我意识到这些工具非常相辅相成的。他们携手并进,创造一个史诗般的NodeJS应用程序开发环境。所以,同时使用,因为他们有不同的用途。

最后给出自己练习的一个gruntfile.js配置文件代码

        module.exports=function(grunt){
    grunt.initConfig({
        watch:{
            jade:{
                files:['views/**'],
                option:{
                    livereload:true
                }
            },
            js:{
                files:['public/js/**','models/**/*.js','schemas/**/*.js'],
                // tasks:['jshint'],
                options:{
                    livereload:true
                }
            }
        },
        nodemon:{
            dev:{
                options:{
                    file:'app.js',
                    args:[],
                    ignoredFiles:['README.md','node_modules/**','.DS_Store'],
                    watchedExtensions:['js'],
                    watchedFolders:['app','config'],
                    debug:true,
                    delayTime:1,
                    env:{
                        PORT:3000
                    },
                    cwd:__dirname
                }
            }
        },
        concurrent:{
            tasks:['nodemon','watch'],
            options:{
                logConcurrentOutput:true
            }
        }
    })

    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.loadNpmTasks('grunt-nodemon');//文件改变后,会自动启动服务 
    grunt.loadNpmTasks('grunt-concurrent');// Run grunt tasks concurrently 并发执行任务

    grunt.option('force',true);//避免编译的时候出现错误而中断服务
    grunt.registerTask('default',['concurrent']);//注册default任务

    }

水平有限,意思大概翻译,原文请看:
Nodemon vs Grunt-Contrib-Watch: What’s The Difference?

猜你喜欢

转载自blog.csdn.net/laohoubin/article/details/46572815
今日推荐