2017-06-06 2 views
4

J'ai une configuration webpack1 minimale que j'ai ramené un projet massif à reproduire juste cela.Comment puis-je obtenir des fichiers sourcemap dans mon dossier de construction?

Lorsque j'exécute ma config avec webpack-dev-server cela fonctionne très bien, sauf que le fichier n'est accessible qu'à localhost:port/bundle.js.map et pas dans mon dossier de projets locaux dist.

lien Repo avec des instructions: https://github.com/rublev/webpack-nosourcemaps

webpack.config.base.js

module.exports = { 
    output: { 
     path: path.join(process.cwd(), '/dist'), 
     publicPath: '/', 
     filename: 'bundle.js' 
    }, 
    resolve: { 
     root: path.join(__dirname, ''), 
     modulesDirectories: [ 
      'node_modules', 
      'app' 
     ], 
     extensions: ['', '.html', '.js'] // removing '' makes everything explode 
    }, 
    plugins: [ 
     new HtmlWebpackPlugin({ 
      title: 'webpack-sourcemap', 
      template: 'app/index.html' 
     }) 
    ], 
    module: { 
     loaders: [], 
    } 
} 

webpack.config.production.js

var config = require('./webpack.config.base.js') 

config.devtool = 'source-map' 

if (process.env.NODE_ENV !== 'test') { 
    config.entry = { 
     main: path.join(process.cwd(), '/app/') + 'app.js', 
     vendor: [ 
      'react', 
      'react-dom' 
     ] 
    } 
} 

config.output = { 
    path: path.join(process.cwd(), '/dist'), 
    pathInfo: true, 
    publicPath: '/', 
    filename: 'bundle.js' 
} 

config.module.loaders = config.module.loaders.concat([ 
    { 
     test: /\.js$/, 
     loaders: ['babel'], 
     exclude: /node_modules/ 
    } 
]) 

config.plugins = config.plugins.concat([ 
    new webpack.HotModuleReplacementPlugin(), 
    new webpack.optimize.OccurenceOrderPlugin(true), 
    new webpack.optimize.CommonsChunkPlugin({ 
     name: 'vendor', 
     filename: 'vendor.js' 
    }), 
    new webpack.optimize.DedupePlugin(), 
    new webpack.optimize.UglifyJsPlugin({ 
     sourceMap: true, 
     compress: { 
      warnings: false 
     } 
    }), 
    new webpack.DefinePlugin({ 
     'process.env': { 
      NODE_ENV: JSON.stringify('production') 
     } 
    }) 
]) 

module.exports = config 

Répondre

0

Vous exécutez ce code

NODE_ENV=production webpack-dev-server ...

ajouter -d drapeau comme celui-ci

NODE_ENV=production webpack-dev-server -d...

Development shortcut-d

Égal à --debug --devtool source-map --output-pathinfo

0

Ajouter à votre config de production config.devtool = 'source-map'; pour le plus haut qualité-source de production-carte. Les autres options de production sont cheap-source-map, cheap-module-source-map et nosources-source-map.

Et c'est bien que vous ayez déjà sourceMap: true dans votre UglifyJsPlugin, sinon les fichiers source-map ne seraient pas générés.

Ressource: https://webpack.js.org/configuration/devtool/