默認的angular-cli構建生成具有非常扁平結構的dist文件夾 - assets文件夾和js,html文件。有沒有辦法創建fe。腳本文件夾,並在構建過程中把所有的js文件?Angular-cli構建文件夾結構
6
A
回答
4
CLI尚未完全支持這一點,但它確實提供了一些有用的工具,可以幫助您實現這一目標。我需要這個來部署我的Angular應用程序和WAR,同時儘量減少通過servlet映射添加的複雜度。這個問題沒有具體提到J2EE,但我認爲這個解決方案的原理可以在各種環境中共享。
相關ng build
參數:
--deploy-url
:其將被應用到資源的路徑映射。 這可能與Angular-CLI目前所獲得的內容相近。--output-path
:爲Angular構建指定一個輸出目錄(特別是,我用它爲不同環境指定了唯一的輸出目錄,因爲應用程序正在部署到具有不同配置的多個目標上)。--base-href
:應用程序的根URI。例如,對於http://localhost:4200/angular-app/
,/angular-app/
。這設置了<base href="<uri>">
頭標記,並且對於非哈希路由是必需的。對其他事情也可能是必要的。
對你來說最有趣的一個可能是--deploy-url
。例如,如果您設置了一個部署URL /dist/
,那麼在您構建的應用程序中對JS文件的引用將以/dist/
爲前綴。
兩個大漁獲這種方法:
--deploy-url
不會改變的JS文件輸出路徑。它只會改變對JS文件的引用。這些文件本身仍將放在根目錄中。您必須在構建過程中添加一個步驟來手動修復此問題。--deploy-url
似乎不適用於任何其他資產。我將所有其他資產放在assets/
目錄中,並且構建的輸出仍然通過assets/<path>
(而不是dist/assets/<path>
根據需要)引用資產。您可以通過提供虛擬目錄或URL重寫來解決此問題。
以供參考,在這裏是爲戰爭我生成的目錄結構:
app/
dist/ <-- Deployed Angular application
assets/
(images, CSS, etc)
*.js
(other assets pulled into the root path, e.g. *.(svg|eot|woff|woff2|ttf) from Font Awesome)
index.html
WEB-INF/
...
index.jsp
這些都是我主動產生這種結構的步驟:
ng build -pr false --prod --output-path build/node-prod --base-href /angular-app/ --deploy-url /angular-app/dist/
。- 通過gradle任務將
build/node-prod
的內容複製到WAR構建目錄的app/dist
。 - 點
index.jsp
至index.html
通過內容<%@include file="dist/index.html"%>
。 - 爲路徑
/dist/*
和/assets/*
的默認servlet(靜態資產)添加servlet映射。 - 通過http://tuckey.org/urlrewrite/爲
^/assets/(.*)$
添加URL映射到/dist/assets/$1
(或通過httpd,nginx等)。由於上面給出的--deploy-url
不適用於其他資產,因此這是必需的。 - (可選)將
^/dist/index.html$
的301或302重定向添加到根上下文路徑,以防止用戶通過dist
URI訪問應用程序。
在生成的webapp中,http://localhost/angular-app/
是我的應用程序的唯一有效端點。該端點指向index.jsp
,其中包含index.html
的內容,該內容通過<script src="/angular-app/dist/<some-file>.js"></script>
標籤加載相關JS。
當需要其他資源時,例如徽標圖像,頁面向assets/<file-name>
發出請求,服務器端通過Tuckey將其重寫爲dist/assets/<file-name>
,透明地解析請求的資產。
這個解決方案的好處在於我們能夠在根上下文中部署Angular應用程序,而不必將內部的ng build
內置到根WAR路徑中。這是非常好的,因爲我們不希望在可以避免的情況下添加全局servlet映射(例如,*.js
)。
相關問題
- 1. 創建文件夾結構
- 2. 如何使用angularCLI構建到另一個文件夾
- 3. Ionic2構建文件夾結構丟失
- 4. 電子構建Windows文件夾結構
- 5. 構建的流行文件夾結構
- 6. 構建文件夾結構的DataBase(datamodel)
- 7. 創建文件夾/文件結構
- 8. 文件夾結構
- 9. 文件夾結構
- 10. PHP MVC文件夾結構/模型文件夾結構
- 11. 替換SVN文件夾結構與非SVN文件夾結構
- 12. 客戶端/服務器項目結構,文件夾結構,構建文件等
- 13. TFS 2017構建複製文件沒有文件夾結構?
- 14. 項目文件夾結構建議
- 15. NullReferenceException在創建文件夾結構時
- 16. 文件夾結構創建從的csproj
- 17. 新建文件夾結構的環
- 18. 如何創建文件夾/文件(pdfs)結構(基本文檔結構/商店
- 19. CanJS文件夾結構
- 20. Laravel文件夾結構
- 21. PhoneGap www文件夾結構
- 22. PHP文件夾結構XAMPP
- 23. 資產文件夾結構
- 24. SVN文件夾結構
- 25. Java文件夾結構
- 26. Django的文件夾結構
- 27. Nightwatchjs文件夾結構
- 28. 項目文件夾結構
- 29. 與文件夾結構
- 30. Symfony文件夾結構