bower install via grunt不会将所有文件复制到targetDir

时间:2015-12-10 13:27:35

标签: gruntjs polymer bower

在一个继承的聚合物1.0项目中,安装程序涉及一个gruntfile,除其他外,调用bower来安装必要的资源。但是,在后面的步骤中,无法找到某些文件,并且grunt任务失败。我是崭露头角和咕噜声的新手,感觉有些失落。

无法找到的相关文件是myproject\components\polymer\polymer-mini.html,但我通过手动复制文件找到了类似的位置。

我的第一步是隔离凉亭安装任务,并在它工作时观察它。这是gruntfile.js中的配置:

bower: {
    install: {
        options: {
            targetDir: './components', 
            layout: 'byType', 
            install: true,
            verbose: false,
            cleanTargetDir: true, 
            cleanBowerDir: true, 
            bowerOptions: {}
        }
    }
}

通过在详细模式下单步执行后暂停执行,我在安装过程中发现了以下内容:

  • 旧的myproject/components文件夹(如果存在)将被删除
  • 文件在myproject/bower_components文件夹
  • 中正常创建 然后将
  • 文件复制到targetDir myproject/components
  • 但是,所有文件似乎都没有到达那里
  • 复制后删除
  • myproject/bower_components

比较myproject/bower_componentsmyproject/components的内容会发现原始文件夹中存在的许多文件在目标文件夹中丢失。例如,提到的myproject/components/polymer只包含polymer.html - 但myproject/bower_components/polymer中有七个文件,包括丢失的polymer-mini.html

显然,有些东西可以过滤复制到targetDir的内容以及没有内容的内容。

我可以以任何方式影响这一点,或者这个设置是否正确,因为它现在?我见过grunt-bower-task and Polymer但不能做很多 - 除了在安装bower_components之后接受的解决方案显然是手工复制了所有内容。当然,必须有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

我最终通过调用copy任务配置来独立于凉亭任务复制文件:

copy: {
        main: {
            files: [
                { expand: true, cwd: 'bower_components/', src: ['**'], dest: 'components/', filter: 'isFile' }, // bower components
            ]
        }
    }

当然,在这种情况下,必须重新配置凉亭任务,不要删除要复制的凉亭目录。

bower: {
    install: {
        options: {
            targetDir: './components', 
            layout: 'byType', 
            install: true,
            verbose: false,
            cleanTargetDir: true, 
            cleanBowerDir: false,
            bowerOptions: {}
        }
    }
}

这不是我所希望的,但在此期间它完成了工作。