我正在开发一个包含多个小部件的应用程序。这些小部件相当大,因此它们被放置在父目录下的不同子目录中。文件结构看起来像这样:
每个小部件都是一个模块,与其他客户端和小部件完全分离,并且它们是独立开发的,具有自己的开发服务器等。
问题在于:当将webpackConfig.devtool设置为使用module的任何内容时(例如cheap-module-source-map),小部件文件将无法接收到正确的源映射。相反,它们会收到类似于(index):40的文件名/行号。(当鼠标悬停时,显示webpack:///:40) 在Chrome中单击该文件时,它会指向一个包含这些内容的文件。
现在非常奇怪的是,即使是构建客户端应用程序时,将所有小部件和客户端代码汇集在一起,只有小部件文件具有这些混乱的源映射。
每个小部件的内容都只是一堆
这是webpack-1,版本号为1.13.0。
我的
小部件的开发服务器如下修改基本配置:(如果有关系的话)
./
+-- server/
|
+-- client/
|
+-- widget1/
|
+-- widget2/
|
+-- widget3/
|
+-- package.json
+-- webpack.base.config
每个小部件都是一个模块,与其他客户端和小部件完全分离,并且它们是独立开发的,具有自己的开发服务器等。
问题在于:当将webpackConfig.devtool设置为使用module的任何内容时(例如cheap-module-source-map),小部件文件将无法接收到正确的源映射。相反,它们会收到类似于(index):40的文件名/行号。(当鼠标悬停时,显示webpack:///:40) 在Chrome中单击该文件时,它会指向一个包含这些内容的文件。
undefined
/** WEBPACK FOOTER **
**
**/
现在非常奇怪的是,即使是构建客户端应用程序时,将所有小部件和客户端代码汇集在一起,只有小部件文件具有这些混乱的源映射。
每个小部件的内容都只是一堆
.js
和.scss
文件,并且有一个index.html
和development-server.js
用于开发。客户端代码几乎相同,除了开发文件。
这是webpack-1,版本号为1.13.0。
我的
webpack.base.config
看起来像这样:const babelQuery = {
es2015: require.resolve('babel-preset-es2015'),
react: require.resolve('babel-preset-react'),
};
function createQuery(...paths) {
return paths.map(resolvePath => `presets[]=${resolvePath}`).join(',');
}
const fullQuery = createQuery(babelQuery.es2015, babelQuery.react);
module.exports = {
cache: true,
context: __dirname,
debug: true,
devtool: '#cheap-module-source-map',
entry: {},
output: {},
resolve: {
extensions: ['', '.js', '.jsx'],
},
module: {
loaders: [
{
test: /\.js$/,
loader: `babel-loader?cacheDirectory,${createQuery(babelQuery.es2015)}`,
exclude: /node_modules/,
},
{
test: /\.jsx$/,
loader: `react-hot-loader!babel-loader?cacheDirectory,${fullQuery}`,
exclude: /node_modules/,
},
{
test: /\.json$/,
loader: 'json-loader',
},
{
test: /\.scss$/,
loader: 'style-loader' +
'!css-loader?modules&sourceMap&localIdentName=[name]__[local]___[hash:base64:5]' +
'!postcss-loader!sass-loader?outputStyle=expanded&sourceMap',
},
{
test: /\.(png|jpg|gif)$/,
loader: 'file-loader?name=img/[name].[ext]',
},
{
test: /\.(ttf|eot|svg|woff(2)?)(\?v=\d+\.\d+\.\d+)?(\?[a-z0-9]+)?$/,
loader: 'file-loader',
},
{
test: /\.css$/,
loader: 'style-loader!css-loader?modules&localIdentName=[name]__[local]___[hash:base64:5]',
include: /flexboxgrid/,
},
{
test: /\.css$/,
loader: 'style-loader!css-loader',
exclude: /flexboxgrid/,
},
],
},
postcss() {
return [autoprefixer];
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: JSON.stringify('development'),
},
}),
],
};
小部件的开发服务器如下修改基本配置:(如果有关系的话)
context: __dirname,
entry: {
bundle: [
'webpack/hot/dev-server',
'webpack-hot-middleware/client',
'./entry.jsx',
],
},
output: {
path: path.resolve(__dirname, 'dist'),
publicPath: `http://localhost:${PORT}/assets/`,
filename: '[name].js',
},