webpack.common.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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].[chunkhash].js',
  14. publicPath: "public/build/",
  15. },
  16. resolve: {
  17. extensions: ['.ts', '.tsx', '.es6', '.js', '.json'],
  18. alias: {
  19. },
  20. modules: [
  21. path.resolve('public'),
  22. path.resolve('node_modules')
  23. ],
  24. },
  25. node: {
  26. fs: 'empty',
  27. },
  28. module: {
  29. rules: [
  30. {
  31. test: /\.(ts|tsx)$/,
  32. enforce: 'pre',
  33. exclude: /node_modules/,
  34. use: {
  35. loader: 'tslint-loader',
  36. options: {
  37. emitErrors: true
  38. }
  39. }
  40. },
  41. {
  42. test: /\.tsx?$/,
  43. exclude: /node_modules/,
  44. use: [
  45. { loader: "awesome-typescript-loader" }
  46. ]
  47. },
  48. {
  49. test: require.resolve('jquery'),
  50. use: [
  51. {
  52. loader: 'expose-loader',
  53. query: 'jQuery'
  54. },
  55. {
  56. loader: 'expose-loader',
  57. query: '$'
  58. }
  59. ]
  60. },
  61. // {
  62. // test : /\.(ico|png|cur|jpg|ttf|eot|svg|woff(2)?)(\?[a-z0-9]+)?$/,
  63. // loader : 'file-loader',
  64. // },
  65. {
  66. test: /\.html$/,
  67. exclude: /index\.template.html/,
  68. use: [
  69. { loader:'ngtemplate-loader?relativeTo=' + (path.resolve(__dirname, '../../public')) + '&prefix=public'},
  70. {
  71. loader: 'html-loader',
  72. options: {
  73. attrs: [],
  74. minimize: true,
  75. removeComments: false,
  76. collapseWhitespace: false
  77. }
  78. }
  79. ]
  80. }
  81. ]
  82. },
  83. plugins: [
  84. new CheckerPlugin(),
  85. ]
  86. };