Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Webpack-dev-server doesn't generate source maps

I use babel-loader, but can't figure out how to generate or where find source maps for transpiled files. I tried eval-source-map, inline-source-map, source-map.

webpack.config.js

const BowerWebpackPlugin = require("bower-webpack-plugin");  module.exports = {     entry: './src/script/index.jsx',     output: {         filename: 'bundle.js',         sourceMapFilename: "bundle.js.map",         publicPath: 'http://localhost:8090/assets'     },     debug: true,     devtool: 'inline-source-map',     module: {         loaders: [             {                    test: /\.js[x]?$/,                  loaders: ['react-hot', 'jsx', 'babel'],                 exclude: /node_modules/                },               {                 test: /\.scss$/,                 loaders: [ 'style', 'css?sourceMap', 'sass?sourceMap' ]               },               {                 test: /\.less$/,                 loaders: [ 'style', 'css?sourceMap', 'less?sourceMap' ]               },               {                 test: /\.css$/,                 loaders: [ 'style', 'css']               },               { test: /\.woff$/,   loader: "url-loader?limit=10000&mimetype=application/font-woff" },               { test: /\.woff2$/,   loader: "url-loader?limit=10000&mimetype=application/font-woff2" },               { test: /\.(eot|ttf|svg|gif|png)$/,    loader: "file-loader" }         ]     },     plugins: [         new BowerWebpackPlugin()     ],     externals: {         //don't bundle the 'react' npm package with our bundle.js         //but get it from a global 'React' variable         'react': 'React'     },     resolve: {         extensions: ['', '.js', '.jsx']     } } 

package.json

    {     "name": "Won",     "version": "0.0.1",     "description": "Internal evidence application",     "main": "index.jsx",     "scripts": {         "start": "npm run serve | npm run dev",         "serve": "./node_modules/.bin/http-server -p 8080",         "dev": "webpack-dev-server -d --progress --colors --port 8090"     },     "author": "And",     "license": "ISC",     "devDependencies": {         "babel-core": "^5.8.23",         "babel-loader": "^5.3.2",         "bootstrap": "^3.3.5",         "bootstrap-select": "^1.7.3",         "bootstrap-table": "^1.8.1",         "bower-webpack-plugin": "^0.1.8",         "colresizable": "^1.5.2",         "css-loader": "^0.16.0",         "events": "^1.0.2",         "extract-text-webpack-plugin": "^0.8.2",         "file-loader": "^0.8.4",         "flux": "^2.1.1",         "http-server": "^0.8.0",         "jquery": "^2.1.4",         "jquery-ui": "^1.10.5",         "json-markup": "^0.1.6",         "jsx-loader": "^0.13.2",         "less": "^2.5.1",         "less-loader": "^2.2.0",         "lodash": "^3.10.1",         "node-sass": "^3.2.0",         "object-assign": "^4.0.1",         "path": "^0.11.14",         "react": "^0.13.3",         "react-hot-loader": "^1.2.9",         "sass-loader": "^2.0.1",         "style-loader": "^0.12.3",         "svg-sprite-loader": "0.0.2",         "url-loader": "^0.5.6",         "webpack": "^1.12.0",         "webpack-dev-server": "^1.10.1"     } } 

edit://

After all this webpack.config.js and this package.json works for me.

edit2://

Now I use this webpack config

like image 841
Matt Avatar asked Aug 30 '15 13:08

Matt


People also ask

How do I enable source map in webpack?

In a sense, source maps are the decoder ring to your secret (minified) code. Using Webpack, specifying devtool: "source-map" in your Webpack config will enable source maps, and Webpack will output a sourceMappingURL directive in your final, minified file.

Does webpack create a dist folder?

Webpack will generate the files and put them in the /dist folder for you, but it doesn't keep track of which files are actually in use by your project. In general it's good practice to clean the /dist folder before each build, so that only used files will be generated. Let's take care of that with output.

How does Webpack Devserver work?

When you run webpack dev server what webpack dev server does is, instead of creating a bundled file ( e.g. bundle. js ) in dist folder, it creates a bundled file in memory. It then serves that information to express , and then express creates a web socket connection to render that on the browser on a certain port no.


1 Answers

Use webpack-dev-server -d

  • -d is shorthand for --debug --devtool source-map --output-pathinfo.
  • output-pathinfo adds comments to the generated bundle that explain what module/files are included in what places. So in the generated code, the comment is added to this line of code: require(/* ./test */23) which says that 23 is pointing to the test module. This is mostly helpful when you're looking at the code Webpack has generated, and not so much when stepping through the debugger. I got this example from this relevant bit of documentation.

  • This all works because webpack-dev-server accepts all the same flags as webpack.

  • See this section in the docs for details.

Tips & gotchas

  • --content-base - by default the dev server will serve files in the directory you run the command in. If your build files are in build/, you need to specify --content-base build/ so the dev server will serve up files in the build directory
  • --inline - auto-reload whenever you save a file with some changes!
like image 127
Titus Avatar answered Sep 23 '22 14:09

Titus