在生产中删除带有WebPack / Babel的React JS中的console.log

时间:2018-05-30 02:50:10

标签: reactjs webpack babeljs

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

babel-plugin-transform-remove-console

我不记得我是否将它安装为--save或--save-dev(并且不太确定区别)。我也不知道如何检查它的安装方式,但它在我的node_modules目录中为babel-plugin-transform-remove-console

无论我使用npm run dev还是npm run build来构建我的项目,我仍然会看到console.log语句。我本来期望npm run build命令删除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 run build没有为我删除console.log语句?

3 个答案:

答案 0 :(得分:1)

  

我不记得我是将其安装为--save还是--save-dev的(并不太确定两者之间的区别)。

只需查看您的package.json文件!

-- save将使您的软件包以依赖关系显示(如果未提供任何选项,这是默认行为)

--save-dev将使您的软件包显示在 devDependencies

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

答案 1 :(得分:0)

当您使用运行webpack -p时,webpack会设置process.env.NODE_ENV = "production",但Babel期望process.env.BABEL_ENV = "production"

答案 2 :(得分:0)

-p是Webpack本身的标志。巴别塔对此一无所知。如果您希望Webpack配置根据它切换行为,则需要自己执行此操作。

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