我有一個 Ionic 應用程式,它嚴重依賴條件編譯,我根據一組類似于 m4 的作業方式的配置值包含或排除代碼塊。
為此,我一直在成功使用https://github.com/nippur72/ifdef-loader 。
我現在面臨著將此應用程式從 Angular 10 升級到 13(Ionic 5 到 6)。
ifdef-loader 在 Angular 10 中無法開箱即用,但 @angular-dev-kit 的補丁 ( https://gist.github.com/tristanidoux/892469f2c345bd6c6551eb19c705a016 ) 允許它運行。
此補丁不適用于 Angular 13,因為所有檔案都已更改并盡可能多地爬取源代碼我還沒有看到如何為 Angular 13 創建類似的補丁。
所以我一直在嘗試使用https://medium.com/angular-in-depth/customizing-angular-cli-build-an-alternative使用 "@angular-builders/custom-webpack": "^13.0.0" -to-ng-eject-v2-c655768b48cc作為指南。
我有以下以 ifdef-loader 檔案為模型的 custom.webpack.config.js 檔案:
// ifdef-loader config
const opts = {
APP: false,
WEB: true,
DEBUG: true,
version: 3,
"ifdef-verbose": true, // add this for verbose output
"ifdef-triple-slash": true, // add this to use double slash comment instead of default triple slash
"ifdef-fill-with-blanks": true, // add this to remove code with blank spaces instead of "//" comments
"ifdef-uncomment-prefix": "// #code " // add this to uncomment code starting with "// #code "
};
module.exports = {
module: {
rules: [
{
test: /\.tsx?$/,
exclude: /node_modules/,
use: [
{ loader: 'ts-loader' },
{ loader: 'ifdef-loader', options: opts }
]
}
]
},
不幸的是,這不起作用,因為 ifdef-loader 似乎沒有被呼叫。
所以三個問題:
我在我的配置中犯了一些明顯的錯誤嗎?
有沒有人讓 ifdef-loader 與 Angular 13 一起作業?如果是這樣,怎么做?
或者,是否有其他解決方案可以在 Angular 13 專案中有條件地包含/排除代碼塊?
任何指標或建議將不勝感激。
uj5u.com熱心網友回復:
一周后,我無法確定如何在 Angular 的 webpack 實作中將模塊插入到 typescript 編譯管道中,所以我選擇為 @angular-devkit/build-angular/@ngtools/webpack 創建一個補丁來呼叫 ifdef-loader直接地。
補丁在這里:Angular Webpack 補丁
這很丑陋,但它有效。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/411204.html
標籤:
下一篇:離子搜索欄減少底部的邊距
