webpack 1:resolve.alias不会将一个npm模块别名
我有一个webpackconfiguration用于为同构React应用程序创build一个服务器包。 在这个configuration里面,我试图使用resolve.alias
别名一个模块( parse
)作为另一个( parse/node
)。 这个关于webpack文档中的resolve.alias的方便的图表看起来应该是可能的。 这就是我的别名对象的样子:
alias: { parse: 'parse/node', pubnub: 'static/deps/pubnub/pubnub-3.13.0.min.js' }
我已经为模块pubnub
使用了别名,并且该别名在预期的情况下工作。 不幸的是,无论我对parsing键做什么,似乎都不会改变我的webpack构build的bundle.js
的结果需求:
/***/ function(module, exports) { module.exports = require("parse"); /***/ },
我试图解决/node_modules/parse/node.js
。 使用绝对/相对path似乎没有工作,也没有添加一个.js
扩展到最后。 在这一点上,我不知道这是一个webpack的bug或我忽略的东西。 任何帮助将不胜感激! 这是一个链接到我的完整的webpackconfiguration的要点: https ://gist.github.com/daleee/a0025f55885207c1a00a
node@5.7.0 npm@3.7.5 webpack@1.12.14
这个问题是在webpackconfiguration中的以下行:
..., externals: [nodeExternals({ whitelist: ['webpack/hot/poll?1000'] })], ...,
webpack-node-externals是一个webpack插件,用于自动将在node_modules
find的模块列入黑名单。 由于npm模块安装在系统上,所以在构build后端时,通常不需要将npm模块与最终包捆绑在一起。 黑名单也阻止了webpack对任何npm模块进行别名。 像这样更改whitelist
arrays解决了我的问题:
..., externals: [nodeExternals({ whitelist: ['webpack/hot/poll?1000', 'parse'] })], ...,
这个故事的寓意:不要复制代码,而不能完全理解它的作用。 如果我只是简单地阅读我正在使用的webpack插件的README.md
,我本可以节省几天的头痛。