webpack serve
,该命令已成功编译。但是我真的需要sourcemaps。这是我的webpack.config.js
。var webpack = require('webpack');
module.exports = {
output: {
filename: 'main.js',
publicPath: '/assets/'
},
cache: true,
debug: true,
devtool: true,
entry: [
'webpack/hot/only-dev-server',
'./src/components/main.js'
],
stats: {
colors: true,
reasons: true
},
resolve: {
extensions: ['', '.js', '.jsx'],
alias: {
'styles': __dirname + '/src/styles',
'mixins': __dirname + '/src/mixins',
'components': __dirname + '/src/components/',
'stores': __dirname + '/src/stores/',
'actions': __dirname + '/src/actions/'
}
},
module: {
preLoaders: [{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
loader: 'jsxhint'
}],
loaders: [{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
loader: 'react-hot!babel-loader'
}, {
test: /\.sass/,
loader: 'style-loader!css-loader!sass-loader?outputStyle=expanded&indentedSyntax'
}, {
test: /\.scss/,
loader: 'style-loader!css!sass'
}, {
test: /\.(png|jpg|woff|woff2)$/,
loader: 'url-loader?limit=8192'
}]
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new webpack.NoErrorsPlugin()
]
};
我真的是webpack的新手,虽然我不确定文档是什么问题,但是文档并没有真正的帮助特定于。
#1 楼
为了使用源映射,应将devtool
选项值从true
更改为this list
中可用的值,例如source-map
devtool: 'source-map'
devtool
:'source-map'
-发出SourceMap。评论
在Webpack 2中已删除denug属性。
– jnns
17年2月6日在19:24
@jnns用什么取代了它?
–布拉德
17年5月12日在4:53
我可以确认(webpack 3.5):devtool就足够了。不需要任何调试值。
–弗兰克·诺克(Frank Nocke)
17年9月19日在14:16
只是想补充一点,如果您使用的是React,则应该为其找到特定的配置(create-react-app)。
–黎明
19年11月7日在22:56
@MelbourneDeveloper,通常,该文件名为* .map,因此,如果您的文件是main.js,则源映射称为main.js.map。但是,在使用webpack-dev-server进行开发的过程中,没有在文件系统上创建任何源映射文件,而是在内存中神奇地创建了该源映射文件,并使用热模块重载技术将其发送到浏览器。希望对您有所帮助。 :-)
– Pats
20-3-11在23:20
#2 楼
也许其他人在某一时刻有这个问题。如果在UglifyJsPlugin
中使用webpack 2
,则需要显式指定sourceMap
标志。例如:new webpack.optimize.UglifyJsPlugin({ sourceMap: true })
评论
我还必须包括devtool:“ source-map”才能正常工作
–维克
17年6月14日在17:25
我必须将此包含在css和sass加载程序选项中。
– d_rail
17年8月3日在18:05
#3 楼
带有源映射的jsx的最小Webpack配置:var path = require('path');
var webpack = require('webpack');
module.exports = {
entry: `./src/index.jsx` ,
output: {
path: path.resolve(__dirname,"build"),
filename: "bundle.js"
},
devtool: 'eval-source-map',
module: {
loaders: [
{
test: /.jsx?$/,
loader: 'babel-loader',
exclude: /node_modules/,
query: {
presets: ['es2015', 'react']
}
}
]
},
};
运行它:
Jozsefs-MBP:react-webpack-babel joco$ webpack -d
Hash: c75d5fb365018ed3786b
Version: webpack 1.13.2
Time: 3826ms
Asset Size Chunks Chunk Names
bundle.js 1.5 MB 0 [emitted] main
bundle.js.map 1.72 MB 0 [emitted] main
+ 221 hidden modules
Jozsefs-MBP:react-webpack-babel joco$
#4 楼
如果要针对开发+生产进行优化,则可以在配置中尝试以下操作:const dev = process.env.NODE_ENV !== 'production'
// in config
{
devtool: dev ? 'eval-cheap-module-source-map' : 'source-map',
}
从文档中:
devtool:“ eval-cheap-module-source-map ”提供了仅映射行(无列映射)且速度更快的SourceMaps。
devtool:“ source-map”无法为模块缓存SourceMaps,而需要为块重新生成完整的SourceMap。这是用于生产的东西。
我正在使用webpack 2.1.0-beta.19
评论
官方文档中提供了有关构建和重建性能的最新,相当精确的清单
–弗兰克·诺克(Frank Nocke)
17年9月19日在14:18
dev变量在哪里/如何设置?
–克里斯
20年6月9日在21:08
在典型情况下,您可能会看到已定义.env文件或对process.env进行了更改。这只是一个例子,但看起来可能像这样:const dev = process.env.development === true
–lfender6445
20 Jun 10'21:26
#5 楼
在Webpack 2上,我尝试了所有12个devtool选项。以下选项链接到控制台中的原始文件并保留行号。请参阅下面的注释:仅行。https://webpack.js.org/configuration/devtool
devtool最佳开发选项
build rebuild quality look
eval-source-map slow pretty fast original source worst
inline-source-map slow slow original source medium
cheap-module-eval-source-map medium fast original source (lines only) worst
inline-cheap-module-source-map medium pretty slow original source (lines only) best
仅行
源映射被简化为每行一个映射。
这通常意味着每个语句一个映射(假设您是这种方式的作者) 。
这会阻止您调试语句级别的执行和行的设置断点。
无法与最小化结合,因为最小化器通常只发出一行。
重新访问此内容
在一个大项目中,我发现... eval-source-map的重建时间约为3.5s ...内联-source-map的重建时间约为7s
#6 楼
甚至我遇到的同样问题,在浏览器中它也显示了已编译的代码。我在webpack配置文件中进行了以下更改,并且现在可以正常使用。 devtool: '#inline-source-map',
debug: true,
在装载机中,我将babel-loader保留为第一选择
loaders: [
{
loader: "babel-loader",
include: [path.resolve(__dirname, "src")]
},
{ test: /\.js$/, exclude: [/app\/lib/, /node_modules/], loader: 'ng-annotate!babel' },
{ test: /\.html$/, loader: 'raw' },
{
test: /\.(jpe?g|png|gif|svg)$/i,
loaders: [
'file?hash=sha512&digest=hex&name=[hash].[ext]',
'image-webpack?bypassOnDebug&optimizationLevel=7&interlaced=false'
]
},
{test: /\.less$/, loader: "style!css!less"},
{ test: /\.styl$/, loader: 'style!css!stylus' },
{ test: /\.css$/, loader: 'style!css' }
]
评论
调试属性已在webpack 2中删除。
– jnns
17年2月6日在19:23
+1。添加include选项对我来说是固定的。在webpack 2中,它看起来像这样:规则:[{loader:'babel-loader',包括:[path.resolve(__ dirname,“ src”)]
–马特·布朗(Matt Browne)
17年5月9日在18:55
评论
仅供参考,我没有为版本2添加调试,我在Webpack 2中删除了'debug'属性。相关文章-使用eval和eval-source-map有什么区别?