OracleJET:如何更改grunt发布目录

时间:2016-03-05 12:53:04

标签: gruntjs oracle-jet

我使用Oracle JET v2.0创建了一个javascript应用程序。正在运行

grunt build:release

在项目根文件夹中创建发布文件夹。如何将其更改为指向另一个路径,例如项目根外部?

1 个答案:

答案 0 :(得分:0)

如果您正在使用Yeoman生成器,则可以按照scripts/grunt/tasks/build.js中的Grunt流程进行操作。您将在if (target === "release") 下看到它按顺序运行了许多任务。

不幸的是,发布文件夹名称在许多任务中都是硬编码的。配置文件。因此,在构建结束时添加任务可能更有意义:发布任务将构建的版本复制到新目录中。您可以将目标添加到名为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"
     ]);
   }
...

为了使其更加强大,如果您正在进行大量构建,则应该执行一些额外的清理任务:发布,因为除非您创建任务,否则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"...
...