[英]Remove warning for package “was not injected in your file” when using Grunt?
我安裝了“angular-i18n”作為涼亭依賴。
當我運行grunt serve
或grunt 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-i18n
的bower.json
你可以看到它缺少main
屬性。 這就是發出警告的原因。
但事實證明,這個項目似乎不適合提供main
財產。 angular-i18n
的文檔顯示您應該通過bower install
它,然后手動鏈接到適合您所需語言環境的文件。 這個軟件包列出一個main
文件是不合適的,因為它提供了許多文件,這些文件都不應該由軟件包決定 - 這是開發人員的選擇。
這種情況的可能解決方案
如果警告你感到困擾,或者你不喜歡手動鏈接到文件的需要,可以將這個包叉子自己的GitHub帳戶並修改bower.json
文件指向main
您要加載的文件。 然后你將刪除angular-i18n
作為項目的依賴項,並將fork的repo添加為依賴項。
注意事項:
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.