0

我想在角度编译器之前剥离一个 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文件中的选项,但它不够灵活。谢谢!

4

0 回答 0