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

Exclude node_module/package from production build webpack

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

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

如果有任何关于此的资源或想法,我将不胜感激。

通过这个 Blog by Mark

中的示例

以及关于这些插件的更多参考资料: IgnorePlugin and DefinePlugin 我像他一样使用了插件,它们是 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 类型的包装移动到通用模块中,以便它可以重复使用