webpack.common.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. var path = require('path')
  2. var HtmlWebpackPlugin = require('html-webpack-plugin')
  3. var webpack = require('webpack')
  4. module.exports = {
  5. entry: {
  6. opensheetmusicdisplay: './src/index.ts', // Main index (OpenSheetMusicDisplay and other classes)
  7. demo: './demo/index.js' // Demo index
  8. },
  9. output: {
  10. path: path.resolve(__dirname, 'build'),
  11. filename: '[name].js',
  12. library: 'opensheetmusicdisplay',
  13. libraryTarget: 'umd'
  14. },
  15. resolve: {
  16. // Add '.ts' and '.tsx' as a resolvable extension.
  17. extensions: ['.ts', '.tsx', '.js']
  18. },
  19. module: {
  20. rules: [
  21. // all files with a '.ts' or '.tsx' extension will be handled by 'ts-loader'
  22. {
  23. test: /\.ts$/,
  24. loader: 'ts-loader',
  25. // loader: 'awesome-typescript-loader',
  26. exclude: /(node_modules|bower_components)/
  27. },
  28. // all html files will be handled by html-loader
  29. {
  30. test: /\.html$/i,
  31. loader: 'html-loader',
  32. exclude: /(node_modules|bower_components|demo|build|bin)/
  33. },
  34. {
  35. test: /\.json5$/i,
  36. loader: 'json5-loader',
  37. type: 'javascript/auto',
  38. exclude: /(node_modules|bower_components|demo|build|bin)/
  39. }
  40. ]
  41. },
  42. plugins: [
  43. new webpack.ProvidePlugin({
  44. $: 'jquery',
  45. jQuery: 'jquery'
  46. }),
  47. new webpack.EnvironmentPlugin({
  48. STATIC_FILES_SUBFOLDER: false, // Set to other directory if NOT using webpack-dev-server
  49. DEBUG: false,
  50. DRAW_BOUNDING_BOX_ELEMENT: false // Specifies the element to draw bounding boxes for (e.g. 'GraphicalLabels'). If 'all', bounding boxes are drawn for all elements.
  51. }),
  52. // add a demo page to the build folder
  53. new HtmlWebpackPlugin({
  54. template: 'demo/index.html',
  55. favicon: 'demo/favicon.ico',
  56. title: 'OpenSheetMusicDisplay Demo'
  57. })
  58. ],
  59. devServer: {
  60. contentBase: [
  61. path.join(__dirname, 'test/data'),
  62. path.join(__dirname, 'build'),
  63. path.join(__dirname, 'demo')
  64. ],
  65. port: 8000,
  66. compress: false
  67. }
  68. }