2015-01-20 46 views
1

yo angular为编写角色应用程序设置了一个基本的脚手架。因此,在index.html我们的代码如下:grunt任务修改yeoman angular index.html

<!-- build:css(.) styles/vendor.css --> 
<!-- bower:css --> 
<link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.css" /> 
<link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap-theme.css" /> 
<!-- endbower --> 
<!-- endbuild -->  

我找的,将消除这些线条和注射文件的正确位置的任务。例如:

<link rel="stylesheet" href="css/bootstrap.css" /> 
<link rel="stylesheet" href="css/bootstrap-theme.css" /> 

或者是否有一些替代方法来处理此问题......就像例如有手表任务创建不同版本的index.html,说index.html.fooTarget;它会根据该目标的正确路径进行更新;然后当涉及到咕噜的任务后面的文件被适当地复制。

可以做些什么来解决这个问题?

+0

Bower将组件安装到bower_components目录中,那有什么问题? – 2015-01-20 19:41:45

+0

我需要复制到我的目标文件夹的那些凉亭文件的分发版本。所以说,它是一个css文件...它应该被复制到一个'css'文件夹,并且index.html应该同样反映......它是你在电话差距/ cordova开发中常见的事情。 – deostroll 2015-01-20 19:46:17

回答

0

也许你应该让路径保持原样,因为CSS文件也是依赖关系。将依赖关系复制到具有相同相对路径的目录中?

但是,如果你愿意,我认为这将帮助你修改你的咕噜任务。

我假设您在您的package.json中有(至少)以下内容。

{ 
    "name": "app", 
    "version": "0.0.1", 
    "dependencies": {}, 
    "devDependencies": { 
    "grunt": "~0.4.1", 
    "grunt-contrib-copy": "~0.4.1", 
    "grunt-text-replace": "0.3.11" 
    } 
} 

然后最小副本&替换任务可能看起来像你的Gruntfile.js以下的(你可以结合副本,并通过使用grunt-contrib-copy独自一人,如果你愿意更换)。

'use strict'; 

module.exports = function(grunt) { 
    grunt.loadNpmTasks('grunt-contrib-copy'); 
    grunt.loadNpmTasks('grunt-text-replace'); 

    grunt.initConfig({ 
     src: 'src', 
     dest: 'dest', 
     copy: { 
      dev: { 
       expand: true, 
       cwd: '<%= src %>', 
       src: '{,*/}*.html', 
       dest: '<%= dest %>/'     
      } 
     }, 
     replace: { 
      dev: { 
       src: ['<%= dest %>/{,*/}*.html'], 
       overwrite: true, 
       replacements: [{ 
        from: 'bower_components/bootstrap/dist/css', 
        to: 'css' 
       }] 
      } 
     } 
    }); 

    grunt.registerTask('prepare', function(val) { 
     var target = val || 'dev'; 
     grunt.task.run([ 
      'copy:' + target, 
      'replace:' + target 
     ]); 
    }); 
}; 

现在,当你运行prepare任务与所需target它将所有的HTML文件复制从srcdest目录,并期望CSS路径替换,让原来的文件不变。

<link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.css" /> 

--> will be replaced as --> 

<link rel="stylesheet" href="css/bootstrap.css" /> 
+0

必须对包含的所有文件执行此操作。 :(必须有更好的方法,现在当我添加一个新的依赖(通过鲍尔)时,我必须分别对我的副本和替换任务进行更改。应该能够读取index.html遍历所有脚本和css文件引用并执行复制和替换任务... – deostroll 2015-01-21 16:21:03

+0

仍然,只需将dev bower_components复制到dist bower_components使用相同的相对路径,然后您不必担心复制/替换任务? – 2015-01-21 17:44:56

+0

我怎么会知道如何很多文件,以及要复制的文件?例如对于引导jquery是一个依赖...我无法从bower.json文件单独弄清楚这一点。 – deostroll 2015-01-21 18:20:13