如何使用Grunt将主文件复制到特定文件夹

时间:2014-12-05 20:17:05

标签: javascript gruntjs bower

我的.bowerrc是这样的:

{
  "directory": "components",
  "strict-ssl": true
}

在bower.json中我有:

"dependencies": {
  "jquery": "~2.1.1",
  "bootstrap": "~3.3.1"
}

当我运行 bower install 时,会将 jquery bootstrap 下载到组件文件夹。

我正在尝试使用Grunt生成如下所示的结构,但是,我找不到这样做的插件。

build /
      js/jquery.min.js
      js/bootstrap.min.js
      css/bootstrap.min.css
      fonts/glyphicons-halflings-regular.eot
      fonts/glyphicons-halflings-regular.svg
      fonts/glyphicons-halflings-regular.ttf
      fonts/glyphicons-halflings-regular.woff

复制这些文件后,我想压缩(我知道如何执行此步骤)构建文件夹中的内容。

1 个答案:

答案 0 :(得分:0)

您可以使用grunt-bower-taks来实现此目的。此任务将负责使用bower下载文件并将其放置在您需要的结构中 您需要指定一个与您需要的文件夹结构相匹配的自定义布局。这是通过添加自定义布局函数作为任务选项的一部分来完成的:

module.exports = function(grunt) {

  // Project configuration.
  grunt.initConfig({
    bower: {
      install: {
        options: {
            targetDir: "./build",
            verbose: true,
            layout: function(type, component, source) {
              return type;
            }
        }
      }
    }
  });

  grunt.loadNpmTasks('grunt-bower-task');
}; 

因为你想要的不仅仅是" main"文件,您还需要在bower.json中添加exportsOverride部分:

"exportsOverride": {
    "jquery": {
      "js": "dist/*.js"
    },
    "bootstrap": {
      "js": "dist/js/*.js",
      "css" : "dist/css/*.css",
      "fonts" : "dist/fonts/*.*"
    }
  }