我知道这是一个旧帖子,但认为在此提到 webpack 脚本加载器可能也会有用。来自 webpack 文档:
"script:在全局上下文中执行 JavaScript 文件(就像在 script 标签中一样),不解析 require。"
http://webpack.github.io/docs/list-of-loaders.html
https://github.com/webpack/script-loader
当迁移旧版构建过程,将 JS 供应商文件和应用程序文件合并在一起时,我发现这特别有用。需要注意的是,脚本加载器似乎只能通过重载 require()
来工作,并且不能被指定在 webpack.config 文件中。尽管许多人认为重载 require
是不良实践,但它可以非常有用,将供应商脚本和应用程序脚本合并到一个捆绑包中,并同时暴露不必添加到其他 webpack 捆绑包中的 JS 全局变量。例如:
require('script!jquery-cookie/jquery.cookie');
require('script!history.js/scripts/bundled-uncompressed/html4+html5/jquery.history');
require('script!momentjs');
require('./scripts/main.js');
使用这种方法可以使 $.cookie、History 和 moment 库在打包后的代码中全局可用,同时将这些第三方库和所有通过 require
导入的文件一起打包到 main.js 脚本中。
此外,这种技术还很实用:
resolve: {
extensions: ["", ".js"],
modulesDirectories: ['node_modules', 'bower_components']
},
plugins: [
new webpack.ResolverPlugin(
new webpack.ResolverPlugin.DirectoryDescriptionFilePlugin("bower.json", ["main"])
)
]
使用Bower的话,会检查每个require
库的package.json中的main
文件。在上面的例子中,History.js没有指定main
文件,因此需要指定文件路径。
webpack.ProvidePlugin
前面添加new
。 http://webpack.github.io/docs/list-of-plugins.html - MK Yung{__esModule: true, default: MY_DEFAULT_EXPORT}
而不是MY_DEFAULT_EXPORT
。 - mgol