webpack.nodeps.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /* global module, __dirname */
  2. const MiniCssExtractPlugin = require('mini-css-extract-plugin');
  3. const common = require("./webpack.common.js");
  4. const path = require('path');
  5. const { merge} = require("webpack-merge");
  6. module.exports = merge(common, {
  7. mode: "production",
  8. output: {
  9. filename: 'converse-no-dependencies.js'
  10. },
  11. optimization: {
  12. minimizer: []
  13. },
  14. plugins: [
  15. new MiniCssExtractPlugin({filename: 'tmp.css'})
  16. ],
  17. module: {
  18. rules: [
  19. {
  20. test: /\.js$/,
  21. include: /src/,
  22. use: {
  23. loader: 'babel-loader',
  24. options: {
  25. presets: [
  26. ["@babel/preset-env", {
  27. "targets": {
  28. "browsers": ["ie 11"]
  29. }
  30. }]
  31. ],
  32. plugins: [
  33. '@babel/plugin-proposal-class-properties',
  34. '@babel/plugin-proposal-nullish-coalescing-operator',
  35. '@babel/plugin-proposal-optional-chaining',
  36. '@babel/plugin-syntax-dynamic-import'
  37. ]
  38. }
  39. }
  40. },
  41. {
  42. test: /\.scss$/,
  43. use: [
  44. MiniCssExtractPlugin.loader,
  45. 'css-loader',
  46. {
  47. loader: 'sass-loader',
  48. options: {
  49. sassOptions: {
  50. includePaths: [path.resolve(__dirname, '../node_modules/')]
  51. }
  52. }
  53. }
  54. ]
  55. }]
  56. },
  57. externals: [{
  58. 'pluggable.js': 'pluggable',
  59. '@converse/skeletor': 'skeletor',
  60. 'localforage': 'localforage',
  61. 'filesize': 'filesize',
  62. 'jed': 'jed',
  63. 'lodash': 'lodash',
  64. 'lodash.noconflict': 'lodash.noconflict',
  65. 'sizzle': 'sizzle',
  66. 'strophe.js': 'strophe',
  67. 'urijs': 'urijs',
  68. 'window': 'window',
  69. }]
  70. });