2016-03-05 32 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"... 
...