UNPKG

rollbar

Version:

Effortlessly track and debug errors in your JavaScript applications with Rollbar. This package includes advanced error tracking features and an intuitive interface to help you identify and fix issues more quickly.

236 lines (202 loc) 5.76 kB
var extend = require('util')._extend; var path = require('path'); var webpack = require('webpack'); var defaults = require('./defaults'); var TerserPlugin = require('terser-webpack-plugin'); var outputPath = path.resolve(__dirname, 'dist'); var defaultsPlugin = new webpack.DefinePlugin(defaults); var uglifyPlugin = new TerserPlugin({ parallel: true, }); var snippetConfig = { name: 'snippet', entry: { 'rollbar.snippet': './src/browser/bundles/rollbar.snippet.js', }, output: { path: outputPath, filename: '[name].js', }, plugins: [defaultsPlugin], module: { rules: [ { enforce: 'pre', test: /\.js$/, loader: 'eslint-loader', exclude: [/node_modules/, /vendor/], options: { failOnError: true, configFile: path.resolve(__dirname, '.eslintrc'), }, }, { test: /\.js$/, loader: 'strict-loader', exclude: [/node_modules/, /vendor/], }, ], }, }; var pluginConfig = { name: 'plugins', entry: { jquery: './src/browser/plugins/jquery.js', }, output: { path: outputPath + '/plugins/', filename: '[name].min.js', }, plugins: [defaultsPlugin], module: { rules: [ { enforce: 'pre', test: /\.js$/, loader: 'eslint-loader', exclude: [/node_modules/, /vendor/], options: { failOnError: true, configFile: path.resolve(__dirname, '.eslintrc'), }, }, { test: /\.js$/, loader: 'strict-loader', exclude: [/node_modules/, /vendor/], }, ], }, }; var vanillaConfigBase = { entry: { rollbar: './src/browser/bundles/rollbar.js', }, output: { path: outputPath, }, plugins: [defaultsPlugin], devtool: 'hidden-source-map', module: { rules: [ { enforce: 'pre', test: /\.js$/, loader: 'eslint-loader', exclude: [/node_modules/, /vendor/], options: { failOnError: true, configFile: path.resolve(__dirname, '.eslintrc'), }, }, { test: /\.js$/, loader: 'strict-loader', exclude: [/node_modules/, /vendor/], }, ], }, }; var UMDConfigBase = { entry: { 'rollbar.umd': ['./src/browser/bundles/rollbar.js'], }, output: { path: outputPath, library: 'rollbar', libraryTarget: 'umd', globalObject: 'this', }, devtool: 'source-map', module: { rules: [ { enforce: 'pre', test: /\.js$/, loader: 'eslint-loader', exclude: [/node_modules/, /vendor/], options: { failOnError: true, configFile: path.resolve(__dirname, '.eslintrc'), }, }, { test: /\.js$/, loader: 'strict-loader', exclude: [/node_modules/, /vendor/], }, ], }, }; var noConflictConfigBase = extend({}, UMDConfigBase); noConflictConfigBase.entry = { 'rollbar.noconflict.umd': ['./src/browser/bundles/rollbar.noconflict.js'], }; var namedAMDConfigBase = extend({}, UMDConfigBase); namedAMDConfigBase.entry = { 'rollbar.named-amd': namedAMDConfigBase.entry['rollbar.umd'], }; namedAMDConfigBase.output = extend({}, namedAMDConfigBase.output); namedAMDConfigBase.output.library = 'rollbar'; namedAMDConfigBase.output.libraryTarget = 'amd'; var config = [snippetConfig, pluginConfig]; function optimizationConfig(minimizer) { return { minimize: minimizer ? true : false, minimizer: minimizer ? [minimizer] : [], }; } function addVanillaToConfig(webpackConfig, filename, extraPlugins, minimizer) { var basePlugins = [defaultsPlugin]; var vanillaConfig = extend({}, vanillaConfigBase); vanillaConfig.name = filename; var plugins = basePlugins.concat(extraPlugins); vanillaConfig.plugins = plugins; vanillaConfig.optimization = optimizationConfig(minimizer); vanillaConfig.output = extend({ filename: filename }, vanillaConfig.output); webpackConfig.push(vanillaConfig); } function addUMDToConfig(webpackConfig, filename, extraPlugins, minimizer) { var basePlugins = [defaultsPlugin]; var UMDConfig = extend({}, UMDConfigBase); var plugins = basePlugins.concat(extraPlugins); UMDConfig.plugins = plugins; UMDConfig.optimization = optimizationConfig(minimizer); UMDConfig.output = extend({ filename: filename }, UMDConfig.output); webpackConfig.push(UMDConfig); } function addNoConflictToConfig( webpackConfig, filename, extraPlugins, minimizer, ) { var basePlugins = [defaultsPlugin]; var noConflictConfig = extend({}, noConflictConfigBase); var plugins = basePlugins.concat(extraPlugins); noConflictConfig.plugins = plugins; noConflictConfig.optimization = optimizationConfig(minimizer); noConflictConfig.output = extend( { filename: filename }, noConflictConfig.output, ); webpackConfig.push(noConflictConfig); } function addNamedAMDToConfig(webpackConfig, filename, extraPlugins, minimizer) { var basePlugins = [defaultsPlugin]; var AMDConfig = extend({}, namedAMDConfigBase); var plugins = basePlugins.concat(extraPlugins); AMDConfig.plugins = plugins; AMDConfig.optimization = optimizationConfig(minimizer); AMDConfig.output = extend({ filename: filename }, AMDConfig.output); webpackConfig.push(AMDConfig); } function generateBuildConfig(name, plugins, minimizer) { addVanillaToConfig(config, name, plugins, minimizer); addUMDToConfig(config, name, plugins, minimizer); addNamedAMDToConfig(config, name, plugins, minimizer); addNoConflictToConfig(config, name, plugins, minimizer); } generateBuildConfig('[name].js', []); generateBuildConfig('[name].min.js', [], uglifyPlugin); module.exports = config;