我想在角度编译器之前剥离一个 ts 代码。这是编译前的样子:
...
/* prod:start */
const title: string = "Production title!"
/* prod:end */
/* dev:start */
const title: string = "Dev title!"
/* dev:end */
要剥离 ts 代码,我在 custom-webpack 配置中使用webpack-remove-block-loader加载器
module.exports = {
module: {
rules: [
{
test: /\.ts$/,
exclude: /node_modules/,
enforce: 'pre',
use: [
{
loader: 'webpack-remove-block-loader',
options: {
active: true,
blocks: excludedClients.blocks,
},
},
],
},
],
},
plugins: [
new webpack.DefinePlugin({
...
为了使 custom-webpack 正常工作,我在angular.json中使用带有此配置的@angular-builders/custom- webpack:
"build": {
"builder": "@angular-builders/custom-webpack:browser",
"options": {
"customWebpackConfig": {
"path": "./custom-webpack.config.js",
"mergeRules": {
"module": {
"rules": "prepend"
}
},
...
问题是它不起作用。如果我从用于剥离 ts 代码的加载程序的 custom-webpack 配置中删除enforce: 'pre'标志 - 它会从已编译的 ts 文件中删除代码块,这是错误的,否则使用enforce: 'pre'它应该在角度编译器之前工作,但事实并非如此,代码仍然对两种类型的构建(产品/开发)都有注释。
是的,我知道可以使用environment.ts
文件中的选项,但它不够灵活。谢谢!