首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Grunt设置基于环境的变量

使用Grunt设置基于环境的变量
EN

Stack Overflow用户
提问于 2013-08-27 23:12:50
回答 2查看 8.1K关注 0票数 1

我正在查看咕噜-字符串-替换,以完成将文件中的变量更改为特定于环境的变量。然而,当我试图运行下面的咕噜脚本时,我会收到这样的警告:"Task:“。但在这段代码中,我定义了:

代码语言:javascript
复制
module.exports = function (grunt) {
    // Project configuration.
    grunt.initConfig({
        min: {
            dev: {
                "string-replace": {
                    dist: {
                        files: {
                            "/newrelic.js": "/newrelic.js"
                        },
                        options: {
                            replacements: [
                                {
                                    pattern: /$APPNAME/ig,
                                    replacement: "services"
                                },
                                {
                                    pattern: /$ENV/ig,
                                    replacement: "nonprod"
                                }
                            ]
                        }
                    }
                }
            },
            prod: {
                pkg: grunt.file.readJSON('package.json'),
                uglify: {
                    options: {
                        banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
                    },
                    build: {
                        src: 'src/<%= pkg.name %>.js',
                        dest: 'build/<%= pkg.name %>.min.js'
                    }
                }
            }
        }
    });

// Load the plugin that provides the "uglify" task.
    grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.loadNpmTasks('grunt-string-replace');

// Default task(s).
    grunt.registerTask('default', ['min:dev']);
    grunt.registerTask('prod', ['min:prod']);

};

我是不是遗漏了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-28 08:09:12

你看过手册了吗?入门指南声明,任务期望在同名属性中指定它们的配置。您没有定义“min”任务,因此它是错误的。

配置对象的顶级键需要与任务名称匹配,然后在任务配置中定义目标(例如,“dev”或“prod”)。

所以,这是你的Gruntfile重新加工过的。我还没有测试过它,所以我不能保证它会起作用,但是它肯定会把你引向正确的方向:

代码语言:javascript
复制
module.exports = function (grunt) {

    // Project configuration.
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        "string-replace": {                 
            dev: {
                files: {
                    "/newrelic.js": "/newrelic.js"
                },
                options: {
                    replacements: [{
                        pattern: /$APPNAME/ig,
                        replacement: "services"
                    }, {
                        pattern: /$ENV/ig,
                        replacement: "nonprod"
                    }]
                }
            }
        },
        uglify: {
            prod: {
                options: {
                    banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
                },
                build: {
                    src: 'src/<%= pkg.name %>.js',
                    dest: 'build/<%= pkg.name %>.min.js'
                }
            }
        }
    });

    // Load the plugin that provides the "uglify" task.
    grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.loadNpmTasks('grunt-string-replace');

    // Default task(s).
    grunt.registerTask('default', ['string-replace:dev']);
    grunt.registerTask('prod', ['uglify:prod']);
};
票数 3
EN

Stack Overflow用户

发布于 2014-02-13 13:06:29

如果您尝试这样做,这个片段将把环境变量SOME_ENV放入grunt配置中,替换只会给您提供一种简单的方法,在文件中执行${SOME_ENV}占位符以进行替换。

代码语言:javascript
复制
module.exports = function(grunt) {
    // Project configuration.
    grunt.initConfig({
        pkg : grunt.file.readJSON('package.json'),
        SOME_ENV: process.env.SOME_ENV,
        copy: {
            files: [
                {expand: true, cwd: "src/", src: ["*.*", "**/*.*"], dest: "./build",}
            ],
            options: {
            // Replace ${MEH} in files with grunt.config.get("MEH"),
            // eg ${SOME_ENV} 
            // == grunt.config.get("SOME_ENV")
            // == process.env.SOME_ENV == systems SOME_ENV environment var
                process: function (content, srcpath) {
                    return content.replace(
                        /\$\{([a-zA-Z.]+)\}/g,
                        function replacer(match, p1, offset, string){
                            var value = grunt.config.get(p1);
                            grunt.log.write("  in file '" + srcpath + "'\n    replacing '" + match + "'\n    with '" + value + "'\n"); 
                            return value;
                        });
                    }
            },
        }
    });

    // Production Build Tools
    grunt.loadNpmTasks('grunt-contrib-copy');

    // Default Production Build task(s).
    grunt.registerTask('default', ['copy']);
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18476939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档