【发布时间】:2015-08-12 22:03:25
【问题描述】:
我的目标是使用 Webpack 将孤立的组件导出到假定的全局对象中。
index.html
<script>
var MyApp = window.MyApp || {};
MyApp.something = MyApp.something || {};
</script>
<script src="my-isolated-module.js"></script>
//
// other modules/components loaded here...
//
<script>
MyApp.something.myIsolatedModule.run();
</script>
在上面的示例中,我假设有一个全局对象/模块具有属性something,该属性将附加其他模块。所以我想将我的隔离模块附加到全局 MyApp.something 对象而不破坏 MyApp 或 MyApp.something。
webpack.config.js
var webpack = require('webpack');
var UglifyJsPlugin = require('webpack/lib/optimize/UglifyJsPlugin');
module.exports = {
target: 'web',
context: __dirname + '/src/',
entry: './main.jsx',
output: {
path: __dirname + '/dist/',
filename: 'app.bundle.js',
library: 'something',
libraryTarget: 'var'
},
resolve: {
extensions: ['', '.js', '.jsx']
},
module: {
loaders: [
{test: /\.jsx$/, loader: '../node_modules/jsx-loader'}
]
},
externals: {
react: {
root: 'React',
commonjs: 'react',
commonjs2: 'react',
amd: 'react'
}
},
plugins: [
new UglifyJsPlugin()
]
};
src/main.jsx
module.exports = {
myIsolatedModule: require('./MyIsolatedModule')
};
我尝试将 Webpack 的 output.libraryTarget 设置为每个可能的值(请参阅 http://webpack.github.io/docs/configuration.html#output-librarytarget),并尝试使用 output.library 的值,以便它将直接命名空间包含在我的模块中。没有什么能如我所愿...
【问题讨论】:
-
如果您的包已经存在,您想将其与
MyApp.something合并?您可以将MyApp添加为external并自行设置其值。
标签: javascript reactjs commonjs webpack