【发布时间】:2017-06-06 08:11:56
【问题描述】:
我正在努力实现以下目标:
-
bundle(按此顺序)jquery、tether和bootstrap.js。 - 在
HTMLpage 中加载此捆绑包,并在其下方加载其他特定于页面的脚本。
为此,我使用webpack 2 和CommonsChunkPlugin。这是我的配置。
对于entries 我有:
const scriptsEntry = {
blog_index: SRC_DIR + "/js/pages/blog_index.js",
blog_about: SRC_DIR + "/js/pages/blog_about.js",
vendor: ["jquery", "tether", "bootstrap"]
};
在plugins 部分:
scriptsPlugins.push(
new webpack.optimize.CommonsChunkPlugin({
name: "vendor",
filename:"vendor.bundle.js",
minChunks: 2
}),
...
}));
在 'index.html' 中加载包:
<script src="{{ url_for('static', filename='dist/js/vendor.bundle.js') + anti_cache_token }}"></script>
<script src="{{ url_for('static', filename='dist/js/home.js') + anti_cache_token }}"></script>
在blog_index.js的源目录里面我使用jquery:
import $ from "jquery";
$(".home-click").click(function () {
alert("clicked from .home-click");
});
结果:
- 所有内容都捆绑在一起,没有任何错误。
- 当我单击
.home-click时,alert box会按预期触发。 - 检查捆绑的文件我看到:
-
vendor.bundle.js包含:jquery、tether和bootstrap。 - 查看内部,例如
blog_index.js(在通过webpack 2运行之后),我注意到jquery导入没有捆绑在此文件中,而是vendor.bundle.js(这是预期的)。
-
我尝试在vendor: ["jquery", "tether", "bootstrap"]这一行中切换库的顺序,但没有任何改变——错误仍然存在。
你知道我该如何解决这个问题,最好不要使用额外的webpack 插件吗?
【问题讨论】:
标签: javascript jquery twitter-bootstrap webpack ecmascript-6