我正在尝试使用webpack设置我的项目,我已经了解了代码分割,现在我想要创建两个独立的包,一个用于应用程序代码,另一个用于库和框架。因此,我的webpack配置如下:
entry: {
app: './app/index.js',
vendor: './app/vendor.js'
},
output: {
filename: '[name].[chunkhash].js',
path: path.resolve(__dirname, 'public/js')
},
watch: true,
module: {
rules: [{
test: /\.css$/,
use: ExtractTextPlugin.extract({
use: 'css-loader'
})
}]
},
plugins: [
new ExtractTextPlugin('styles.css'),
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor'
})
]
在我的vendor.js包中,我只有一行代码:
import moment from 'moment';
当我尝试在我的app.js文件中使用它时,它告诉我moment未定义。所以,我不明白的是,包是否具有公共作用域?如果没有,那么我如何访问在另一个包中导出的变量?如果不能,那么像这里描述的https://webpack.js.org/guides/code-splitting-libraries/,拥有供应商包的意义是什么?
moment js
在node_modules
中吗?你如何在index.js
中使用vendor.js
? - Tomas Ramirez Sarduy