webpack.nodeps.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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. entry: {
  9. "converse-no-dependencies": path.resolve(__dirname, "../src/entry.js"),
  10. },
  11. plugins: [
  12. new MiniCssExtractPlugin({filename: 'tmp.css'})
  13. ],
  14. module: {
  15. rules: [
  16. {
  17. test: /\.js$/,
  18. include: /src/,
  19. use: {
  20. loader: 'babel-loader',
  21. options: {
  22. presets: [
  23. ["@babel/preset-env", {
  24. "targets": {
  25. "browsers": ["ie 11"]
  26. }
  27. }]
  28. ],
  29. plugins: [
  30. '@babel/plugin-proposal-class-properties',
  31. '@babel/plugin-proposal-nullish-coalescing-operator',
  32. '@babel/plugin-proposal-optional-chaining',
  33. '@babel/plugin-syntax-dynamic-import'
  34. ]
  35. }
  36. }
  37. },
  38. {
  39. test: /\.scss$/,
  40. use: [
  41. MiniCssExtractPlugin.loader,
  42. 'css-loader',
  43. {
  44. loader: 'sass-loader',
  45. options: {
  46. sassOptions: {
  47. includePaths: [path.resolve(__dirname, '../node_modules/')]
  48. }
  49. }
  50. }
  51. ]
  52. }]
  53. },
  54. externals: [{
  55. 'pluggable.js': 'pluggable',
  56. '@converse/skeletor': 'skeletor',
  57. 'localforage': 'localforage',
  58. 'filesize': 'filesize',
  59. 'jed': 'jed',
  60. 'lodash': 'lodash',
  61. 'lodash.noconflict': 'lodash.noconflict',
  62. 'sizzle': 'sizzle',
  63. 'strophe.js': 'strophe',
  64. 'urijs': 'urijs',
  65. 'window': 'window',
  66. }]
  67. });