webpack.common.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. const path = require('path');
  2. const { CheckerPlugin } = require('awesome-typescript-loader');
  3. module.exports = {
  4. target: 'web',
  5. stats: {
  6. children: false
  7. },
  8. entry: {
  9. app: './public/app/index.ts',
  10. },
  11. output: {
  12. path: path.resolve(__dirname, '../../public/build'),
  13. filename: '[name].[hash].js',
  14. // Keep publicPath relative for host.com/grafana/ deployments
  15. publicPath: "public/build/",
  16. },
  17. resolve: {
  18. extensions: ['.ts', '.tsx', '.es6', '.js', '.json'],
  19. alias: {
  20. },
  21. modules: [
  22. path.resolve('public'),
  23. path.resolve('node_modules')
  24. ],
  25. },
  26. node: {
  27. fs: 'empty',
  28. },
  29. module: {
  30. rules: [
  31. {
  32. test: require.resolve('jquery'),
  33. use: [
  34. {
  35. loader: 'expose-loader',
  36. query: 'jQuery'
  37. },
  38. {
  39. loader: 'expose-loader',
  40. query: '$'
  41. }
  42. ]
  43. },
  44. {
  45. test: /\.html$/,
  46. exclude: /index\.template.html/,
  47. use: [
  48. { loader: 'ngtemplate-loader?relativeTo=' + (path.resolve(__dirname, '../../public')) + '&prefix=public' },
  49. {
  50. loader: 'html-loader',
  51. options: {
  52. attrs: [],
  53. minimize: true,
  54. removeComments: false,
  55. collapseWhitespace: false
  56. }
  57. }
  58. ]
  59. }
  60. ]
  61. },
  62. plugins: [
  63. new CheckerPlugin(),
  64. ]
  65. };