javascript - 如何将任务与 Grunt 结合起来

标签 javascript automation gruntjs

我需要将 default 任务与 build 结合起来。
需要完成构建,以便其余任务可以继续。

 // Default task(s).
grunt.registerTask('default', ['lint','sass:dev', 'concurrent:default']);


// Lint task(s).
grunt.registerTask('lint', ['jshint', 'csslint']);

// Build task(s).
grunt.registerTask('build', ['lint', 'loadConfig', 'ngAnnotate', 'uglify', 'cssmin']);

我是个咕噜菜鸟,已经尝试了一些东西,但没有成功。

 // Project Configuration
grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    watch: {
        serverViews: {
            files: watchFiles.serverViews,
            options: {
                livereload: true
            }
        },
        serverJS: {
            files: watchFiles.serverJS,
            tasks: ['jshint'],
            options: {
                livereload: true
            }
        },
        clientViews: {
            files: watchFiles.clientViews,
            options: {
                livereload: true,
            }
        },
        clientJS: {
            files: watchFiles.clientJS,
            tasks: ['jshint'],
            options: {
                livereload: true
            }
        },
        clientCSS: {
            files: watchFiles.clientCSS,
            tasks: ['csslint'],
            options: {
                livereload: true
            }
        },
        sass: {
            files: watchFiles.sass,
            tasks: ['sass:dev'],
            options: {
                livereload: true
            }
        }
    },
    jshint: {
        all: {
            src: watchFiles.clientJS.concat(watchFiles.serverJS),
            options: {
                jshintrc: true
            }
        }
    },
    csslint: {
        options: {
            csslintrc: '.csslintrc',
        },
        all: {
            src: watchFiles.clientCSS
        }
    },
    uglify: {
        production: {
            options: {
                mangle: false
            },
            files: {
                'public/dist/application.min.js': 'public/dist/application.js'
            }
        }
    },
    cssmin: {
        combine: {
            files: {
                'public/dist/application.min.css': '<%= applicationCSSFiles %>'
            }
        }
    },
    nodemon: {
        dev: {
            script: 'server.js',
            options: {
                nodeArgs: ['--debug'],
                ext: 'js,html',
                watch: watchFiles.serverViews.concat(watchFiles.serverJS)
            }
        }
    },
    /**
     * Sass
     */
     sass: {
        dev: {
            options: {
                style: 'expanded',
                compass: true
            },
            files: {
               'public/css/app.css': 'public/sass/{,*/}*.{scss,sass}'
             //  'public/css/bootstrap.css': 'public/lib/bootstrap-sass-official/assets/stylesheets/_bootstrap.scss'
            }
        },
        dist: {
            //you could use this as part of the build job (instead of using cssmin)
            options: {
                style: 'compressed',
                compass: true
            },
            files: {
                'public/dist/style.min.css': 'style/{,*/}*.{scss,sass}'
            }
        }
    },

    'node-inspector': {
        custom: {
            options: {
                'web-port': 1337,
                'web-host': 'localhost',
                'debug-port': 5858,
                'save-live-edit': true,
                'no-preload': true,
                'stack-trace-limit': 50,
                'hidden': []
            }
        }
    },
    ngAnnotate: {
        production: {
            files: {
                'public/dist/application.js': '<%= applicationJavaScriptFiles %>'
            }
        }
    },
    concurrent: {
        default: ['nodemon', 'watch'],
        debug: ['nodemon', 'watch', 'node-inspector'],
        options: {
            logConcurrentOutput: true,
            limit: 10
        }
    },
    env: {
        test: {
            NODE_ENV: 'test'
        },
        secure: {
            NODE_ENV: 'secure'
        }
    },
    mochaTest: {
        src: watchFiles.mochaTests,
        options: {
            reporter: 'spec',
            require: 'server.js'
        }
    },
    karma: {
        unit: {
            configFile: 'karma.conf.js'
        }
    }
});

// Load NPM tasks
require('load-grunt-tasks')(grunt);

// Making grunt default to force in order not to break the project.
grunt.option('force', true);

// A Task for loading the configuration object
grunt.task.registerTask('loadConfig', 'Task that loads the config into a grunt option.', function() {
    var init = require('./config/init')();
    var config = require('./config/config');

    grunt.config.set('applicationJavaScriptFiles', config.assets.js);
    grunt.config.set('applicationCSSFiles', config.assets.css);
});

// Default task(s).
grunt.registerTask('default', ['lint','sass:dev', 'concurrent:default']);


// Lint task(s).
grunt.registerTask('lint', ['jshint', 'csslint']);

// Build task(s).
grunt.registerTask('build', ['lint', 'loadConfig', 'ngAnnotate', 'uglify', 'cssmin']);

最佳答案

您需要注册组合任务如下:

grunt.registerTask('combine', ['default', 'build']);

参见registerTask documentation .

关于javascript - 如何将任务与 Grunt 结合起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33059760/

相关文章:

javascript - 从在javascript中调用的Android函数获取值并将其返回给js

javascript - 有没有办法通过javascript模拟iPhone "Home"按钮按下并重新启动应用程序

java - SendKeys 不会填充 Internet Explorer 中相应组件中的值,但在 Chrome 中却可以

terminal - Grunt/Jshint-Task Watcher终端输出颜色

javascript - 如何在javascript中的日历中显示当前日期突出显示

javascript - 显示相同 div 的 3 个复选框(显示 :none)

javascript - 带有自定义分页的 div slider

linux - 在 Linux CentOS 7 上每周自动将 Oracle 数据库导出到 CSV 的最佳方法是什么?

node.js - 多个项目的单个 node_modules 文件夹

npm - 如何从命令行获取 grunt 项目的版本?