2015-01-20 47 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