Gruntjs Grunt watch可以在不同的环境中启动不同的任务

Gruntjs Grunt watch可以在不同的环境中启动不同的任务,gruntjs,grunt-contrib-watch,grunt-contrib-copy,Gruntjs,Grunt Contrib Watch,Grunt Contrib Copy,GruntJS生成我的CSS+JS后,我希望它将生成的文件复制到服务器上的适当位置,因此我设置了不同的grunt复制任务。对于开发和生产环境,要复制到的路径不同: devjs: { src: paths.dest + '/assets/prod.min.js', dest: '/srv/www/dev/js/prod.min.js' }, prodjs: { src: path

GruntJS生成我的CSS+JS后,我希望它将生成的文件复制到服务器上的适当位置,因此我设置了不同的grunt复制任务。对于开发和生产环境,要复制到的路径不同:

        devjs: {
            src: paths.dest + '/assets/prod.min.js',
            dest: '/srv/www/dev/js/prod.min.js'
        },
        prodjs: {
            src: paths.dest + '/assets/prod.min.js',
            dest: '/srv/www/htdocs/js/prod.min.js'
        },
如何让
grunt-watch
知道它所处的环境,从而为该环境启动相应的grunt-copy任务?我是否需要一个在git repo中没有跟踪的配置文件或其他定义环境的文件,或者有更好的方法来实现这一点

目前,我的
grunt contrib watch.js
具有以下功能,尽管我希望根据环境的不同,它只启动copy:devjs或copy:prodjs

        js: {
            files: [
                paths.assets + '/**/*.js',
            ],
            tasks: ['js', 'copy:devjs', 'copy:prodjs']
        },
有什么想法吗?谢谢

我怎样才能让grunt watch知道它在哪个环境中

最佳做法是定义一个
NODE\u ENV
环境变量来区分不同的环境。然后可以使用某个子句使用
process.env.NODE\u env
来注册不同的任务。
然后,您可以使用不同的配置运行相同的任务名称。
例如:

if(process.env.NODE_ENV === 'prod')
    grunt.registerTask('mytask', ['watch:prodjs']);
else
    grunt.registerTask('mytask', ['watch:devjs']);
另一种不同的方法(我认为是更好的方法)是在每个环境中注册不同的任务。
这种方式更明确,因此更安全

grunt.registerTask('prod-task', ['watch:prodjs', 'some-other:prodtask']);
grunt.registerTask('dev-task', ['watch:devjs', 'some-other:devtask']);
然后,您可以为您的环境运行所需的任何任务。

grunt prod-task
我怎样才能让grunt watch知道它在哪个环境中

最佳做法是定义一个
NODE\u ENV
环境变量来区分不同的环境。然后可以使用某个子句使用
process.env.NODE\u env
来注册不同的任务。
然后,您可以使用不同的配置运行相同的任务名称。
例如:

if(process.env.NODE_ENV === 'prod')
    grunt.registerTask('mytask', ['watch:prodjs']);
else
    grunt.registerTask('mytask', ['watch:devjs']);
另一种不同的方法(我认为是更好的方法)是在每个环境中注册不同的任务。
这种方式更明确,因此更安全

grunt.registerTask('prod-task', ['watch:prodjs', 'some-other:prodtask']);
grunt.registerTask('dev-task', ['watch:devjs', 'some-other:devtask']);
然后,您可以为您的环境运行所需的任何任务。

grunt prod-task

为此,我选择使用命令行选项。因此,我会在命令行(和cron)上使用grunt-watch--enviro=prod,然后在grunt-contrib-watch.js中使用:

module.exports = function(grunt) {

    var paths = grunt.config.get('paths');

    if ( grunt.option( "enviro" ) === 'prod' ) {
        var jsprocess = ['js', 'copy:prodjs'];
    } else if ( grunt.option( "enviro" ) === 'dev' ) {
        var jsprocess = ['js', 'copy:devjs'];
    } else {
        var jsprocess = ['js'];
    }

    grunt.config.set(
        'watch',
        {
            options: {
                expand: true
            },
            css: {
                files: [
                    paths.assets + '/**/*.*ss',
                ],
                tasks: cssprocess
            },...

为此,我选择使用命令行选项。因此,我会在命令行(和cron)上使用grunt-watch--enviro=prod,然后在grunt-contrib-watch.js中使用:

module.exports = function(grunt) {

    var paths = grunt.config.get('paths');

    if ( grunt.option( "enviro" ) === 'prod' ) {
        var jsprocess = ['js', 'copy:prodjs'];
    } else if ( grunt.option( "enviro" ) === 'dev' ) {
        var jsprocess = ['js', 'copy:devjs'];
    } else {
        var jsprocess = ['js'];
    }

    grunt.config.set(
        'watch',
        {
            options: {
                expand: true
            },
            css: {
                files: [
                    paths.assets + '/**/*.*ss',
                ],
                tasks: cssprocess
            },...