代码之家  ›  专栏  ›  技术社区  ›  kojow7

使用webpack/babel删除console.log in production react js

  •  2
  • kojow7  · 技术社区  · 6 年前

    我希望将console.log保留在开发人员版本中,但在生产版本中,我希望删除它们。

    babel-plugin-transform-remove-console

    我不记得我是以--save还是--save dev的形式安装的(不太确定两者的区别)。我也不知道如何检查它是如何安装的,但是它在我的node_modules目录中 Babel插件转换移除控制台 .

    我是否使用 npm run dev npm run build 要构建我的项目,我仍然可以看到console.log语句。我本以为 NPM运行构建 命令删除console.log文件。

    我的.babelrc文件如下:

    {
      "presets" : ["env", "stage-0", "react"],
      "env" : {
        "production": {
          "plugins": ["transform-remove-console"]
        }
      }
    }
    

    我的package.json的相关部分如下:

      "scripts": {
        "dev": "webpack -d --watch",
        "build": "webpack -p"
      },
      ...
      "dependencies": {
        ...
        "babel-plugin-transform-remove-console": "^6.9.2",
        ...
      }
    

    为什么是 NPM运行构建 没有为我删除console.log语句?

    3 回复  |  直到 6 年前
        1
  •  1
  •   SparkyRaccoon    6 年前

    我不记得我是否把它安装成 --save --save-dev (不太确定两者的区别)。

    看看你的package.json文件!

    -- save 将使您的包出现在 依赖项 (如果未提供选项,则为默认行为)

    --保存dev 将使您的包出现在 开发依赖项

    https://docs.npmjs.com/cli/install

        2
  •  0
  •   Isaac Ferreira    6 年前

    当你使用跑步时 webpack -p ,Webpack集 process.env.NODE_ENV = "production" 但是巴贝尔希望 process.env.BABEL_ENV = "production" .

        3
  •  0
  •   loganfsmyth    6 年前

    -p 是Webpack本身的标志。巴贝尔对此一无所知。如果您希望Webpack配置基于它来切换行为,那么您需要自己这样做。

    // webpack.config.js
    module.exports = function(env) {
      return {
        // ...
        module: {
          rules: [{
            loader: "babel-loader",
            options: {
              forceEnv: env.production ? "production" : "development"
            }
          }],
        },
      },
    };