Как изменить 'sourceMappingURL' с помощью webpack

моя производственная конфигурация webpack:

{
  output: {
    publicPath: "https://cdn.example.com/sub-directory/",
    filename: '[name]-[chunkhash].min.js'
  },

  devtool: 'source-map',

  plugins: [
    new webpack.optimize.UglifyJsPlugin()
  ]
}

теперь у меня есть два файла app-12345.min.js и app-12345.min.js.map.

Я также автоматически сгенерировал CDN URL https://cdn.example.com/sub-directory/app-12345.min.js для основного сценария.

но sourceMappingURL по-прежнему относительный путь //# sourceMappingURL=app-12345.min.js.map и не доступен непосредственно в браузере.

мой вопрос в том, как я могу установить sourceMappingURL как абсолютный автоматически генерируемый путь?

3 ответов


на SourceMapDevToolPlugin плагин-это вариант.

new webpack.SourceMapDevToolPlugin({
    filename: '[file].map',
    append: '\n//# sourceMappingURL=' + path + '[url]'
});

наконец, это возможно в Webpack 3 использование руководства из @omjответ и следующая конфигурация

  devtool: 'hidden-source-map', // SourceMap without reference in original file

  new webpack.SourceMapDevToolPlugin({
    filename: '[file].map',
    append: `\n//# sourceMappingURL=${path}[url]`
  })

обновление (Webpack v3.10.0):

новая опция была добавлена с Webpack v3.10.0. Опция называется publicPath:

new webpack.SourceMapDevToolPlugin({
  filename: '[file].map',
  publicPath: 'https://example.com/dev/'
});

С Webpack 2 Вы можете использовать скрытый источник-карта для devtool и баннер-webpack-плагин от https://github.com/lcxfs1991/banner-webpack-plugin и установить что-то вроде этого:

new banner({
    chunks: {
        "main": {
            afterContent: "\n//# sourceMappingURL=custom/url/to/map\n"
         }
    }
})