从生产构建webpack中排除node_module / package

时间:2018-06-18 14:09:04

标签: reactjs webpack build production-environment

我正在开发一个使用"webpack": "^2.4.1",的项目,它是一个ReactJS项目,我已经安装了模块airbnb/prop-types-exact,我正在使用这个包进行开发,我不想要用户我写的一个组件,用于将不存在的属性传递给该组件。

我想在构建生产应用程序时删除此包。我使用Webpack Bundle Initializer来查看airbnb/prop-types-exact的包大小,它不是那么大,但我想将它从生产版本中删除,这是否可以实现?使用我正在使用的webpack版本还是使用后者版本?

我很感激任何关于此的资源或想法,谢谢。

1 个答案:

答案 0 :(得分:0)

下面的示例Blog by Mark

有关这些插件的更多参考资料: IgnorePluginDefinePlugin 我像他一样使用过插件,分别是IgnorePluginUglifyJsPlugin,然后在我使用airbnb/prop-types-exact软件包的组件中,我正在检查我所处的环境喜欢..

let exactProps ;
if (process.env.NODE_ENV === "development") {
    exactProps = require("prop-types-exact");
}

并根据exactProps是否具有值(意味着require函数已经运行)和(意味着exactProps具有prop-types-exact包中的函数)来决定, 我用这个函数包装我的道具类型,例如。

const propTypes = {
  someProp: PropTypes.iRequired
}

if (exactProps && typeof exactProps === "function") {
  MyComponent.propTypes = exactProps(propTypes);
} else {
  MyComponent.propTypes = propTypes;
}

最后我导出MyComponent组件

export MyComponent 

我打算将组件的prop类型的包装移到通用模块中,以便可重复使用