2016-03-05 76 views

回答

0

如果您使用Yeoman发电机,您可以按照scripts/grunt/tasks/build.js中的Grunt流程进行操作。您会在之下看到它按顺序运行了许多任务。

不幸的是,版本文件夹名称在许多这些任务的配置文件中被硬编码。因此,在构建版本任务结束时添加一个任务可能会更有意义:将内置版本复制到新目录中。你可以一个目标添加到命名myFinalRelease scripts/grunt/config/copy.js文件:

module.exports = { 
    release: 
    { 
    src: [ 
     "**", 
     "!bower_components/**", 
     "!grunt/**", 
     "!scripts/**", 
     "!js/**/*.js", 
     "js/libs/**", 
     "!js/libs/**/*debug*", 
     "!js/libs/**/*debug*/**", 
     "!node_modules/**", 
     "!release/**", 
     "!test/**", 
     "!.gitignore", 
     "!bower.json", 
     "!Gruntfile.js", 
     "!npm-shrinkwrap.json", 
     "!oraclejetconfig.json", 
     "!package.json" 
    ], 
    dest: "release/", 
    expand: true 
    }, 
    myFinalRelease: 
    { 
    cwd: 'release/', 
    src: ['**'], 
    dest: "myRelease", 
    expand: true 
    } 

}; 

然后添加任务:目标上的scripts/grunt/tasks/build.js释放部分的最后一行的副本步:

... 
if (target === "release") 
    { 
    grunt.task.run(
    [ 
     "clean:release", 
     "injector:mainReleasePaths", 
     "uglify:release", 
     "copy:release",   
     "requirejs", 
     "clean:mainTemp", 
     "copy:myFinalRelease" 
    ]); 
    } 
... 

为了使这更强大的,如果你正在做大量的build:释放,你应该做一些额外的清理任务,因为myRelease文件夹不会被清理掉,除非你创建任务来完成它。或者你可以看看其他Grunt插件,如grunt-contrib-rename。

如果这太复制了,而且对于您的口味太混乱了,您可以改为编辑所有硬编码的任务配置,以更改版本目录的名称。你会发现目录名显示出来的这四个文件:

scripts/grunt/config/clean.js

... 
release: ["release/*"], 
... 

scripts/grunt/config/uglify.js

... 
dest:"release/js" 
... 

scripts/grunt/config/copy.js

... 
dest: "release/", 
... 

scripts/grunt/config/require.js

... 
    baseUrl: "./release/js", 
    name: "main-temp", 
    mainConfigFile: "release/js/main-temp.js", 
    optimize: "none", 
    out: "release/js/main.js"... 
...