簡體   English   中英

使用Grunt時刪除包“未在您的文件中注入”的警告?

[英]Remove warning for package “was not injected in your file” when using Grunt?

我安裝了“angular-i18n”作為涼亭依賴。

當我運行grunt servegrunt build我收到警告:

angular-i18n未注入您的文件中。 請查看“/ $ APP_ROOT / bower_components / angular-i18n”獲取所需文件,然后手動將其包含在您的文件中。

如何刪除此郵件?

是否讓grunt將此文件插入我的index.html中刪除此警告?

背景

您的Grunt任務似乎正在使用wiredep查看您的Bower依賴項並注入標記以將其關聯文件(CSS的link ,JS的script等)加載到您的HTML中。

wiredep通過查看項目中的bower.json文件來確定您需要的內容,然后查看每個依賴項的bower.json文件以找出它們需要的內容,等等。 在開發了依賴關系樹之后, wiredep使用bower.json文件中的main屬性來確定每個所需包中的哪些文件應鏈接到HTML中。

如果包沒有適當的bower配置(缺少bower.json或缺少/不正確的main屬性), wiredep警告您該問題,以便您知道它無法自動添加您需要的內容。 換句話說,它告訴您並非所有資產都已添加到您構建的HTML中,並且您需要手動干預以添加缺少的內容。

一般解決方案

通常,您無法在自己的代碼中執行任何操作來糾正此問題。 手動鏈接HTML中的文件(在wiredep標記區域之外,以避免被覆蓋)將確保您的項目正常工作。 然而, wiredep會在運行時始終發出警告,因為包本身仍有問題。 您需要向問題包的所有者開放一個問題,以便讓他們更正其包裝元信息。

您遇到問題的項目

搜索了bower for angular-i18n軟件包 ,發現該項目是在https://github.com/angular/bower-angular-i18n上托管的。 如果你看看angular-i18nbower.json你可以看到它缺少main屬性。 這就是發出警告的原因。

但事實證明,這個項目似乎不適合提供main財產。 angular-i18n文檔顯示您應該通過bower install它,然后手動鏈接到適合您所需語言環境的文件。 這個軟件包列出一個main文件是不合適的,因為它提供了許多文件,這些文件都不應該由軟件包決定 - 這是開發人員的選擇。

這種情況的可能解決方案

如果警告你感到困擾,或者你不喜歡手動鏈接到文件的需要,可以將這個包叉子自己的GitHub帳戶並修改bower.json文件指向main您要加載的文件。 然后你將刪除angular-i18n作為項目的依賴項,並將fork的repo添加為依賴項。

注意事項:

  1. 如果您不熟悉維護Git repos / forks,這可能會導致問題保持最新。
  2. 只有當angular-i18n被列為您自己項目的顯式依賴項並且作為另一個項目的依賴項加載時,這才有效。 如果另一個項目正在加載此包,則必須從樹中開始分支項目,以便您可以覆蓋每個項目的配置。

總而言之,在這種情況下,最好手動鏈接到您想要的文件並忽略警告。

我在yeoman項目中使用angular-i18n收到此錯誤消息。 wiredep grunt任務發出此錯誤消息。 有兩種解決方案:

1.排除angular-i18n並在index.html中手動包含文件

Gruntfile.js

wiredep: {
  app: {
    src: ['<%= yeoman.app %>/index.html'],
    ignorePath:  /\.\.\//,
    exclude: [
      'bower_components/angular-i18n'
    ]
  }
}

的index.html

<script src="bower_components/angular-i18n/angular-locale_de-de.js"></script>

要么:

2.覆蓋/設置bower_components / angular-i18n / bower.json的主要屬性

Gruntfile.js

wiredep: {
  app: {
    src: ['<%= yeoman.app %>/index.html'],
    ignorePath:  /\.\.\//,
    overrides: {
      'angular-i18n': {
        'main': 'angular-locale_de-de.js'
      }
    }
  }
}

我選擇使用第二個選項覆蓋主要屬性。 這種方式在index.html中,angular-i18n庫仍然由grunt任務自動注入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM