Grunt.js DEV vs PROD任务

时间:2014-01-29 01:28:14

标签: javascript node.js configuration gruntjs

刚刚开始学习一些Grunt(以及替代方案 - gulp.js),我遇到了一些我自己似乎无法弄清楚的混乱。我理解你如何为不同的环境定义不同的任务,以便提高效率和提高性能,但是我遇到的困难就是如何利用这两种类型的任务。

问题1:假设我有一个images目录,我不希望在开发过程中运行grunt-contrib-imagemin,但确实希望在生产过程中运行它“已处理”图片位于images/build。我如何在文件路径中考虑到这一点?有没有办法实现自动化?

问题2:我不是开发人员,而且我对任何类型的服务器配置都没什么经验,所以当人们说“在您的服务器上运行grunt build时我很困惑” 。那会发生什么?甚至可能像iPage这样廉价的共享主机吗?

我真的想用构建工具扩展我的知识,所以欢迎任何建议或评论。谢谢你花时间!

1 个答案:

答案 0 :(得分:2)

  1. 您需要为开发和生产指定不同的任务。像

    这样的东西
    grunt.initConfig({
        imagemin: {
            dev: {
              // dev server minify config
            },
            prod: {
              // production server minify config
            }
        },
        devtask: {
            //Some task for development mode
        }
    });
    
    grunt.loadNpmTasks('grunt-contrib-imagemin');
    grunt.loadNpmTasks('devtask');
    
    grunt.registerTask('default', ['devtask']);
    grunt.registerTask('dev', ['devtask']);
    grunt.registerTask('prod', ['imagemin:prod']);
    

    现在如果你在终端输入'grunt dev',grunt只运行'devtask'。只是'grunt'将运行'default'中列出的任务,这与'grunt dev'相同。

    如果输入'grunt prod',grunt会运行imagemin任务的prod目标。

    所以现在imagemin仅用于生产。

    修改imagemin任务的'src'和'dest'属性以获取'images / build'中的输出。您可以指定'cwd'属性来告诉文件路径。

  2. 要在服务器端执行这些操作,您需要NodeJS。一些网络托管公司提供。您需要咨询您的。我通常只是在我的开发机器上执行grunt步骤,然后通过ftp将输出文件传输到服务器。这一步也可以通过许多可用的grunt ftp插件通过grunt完成。