webpack.common.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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/OpenSheetMusicDisplay/OpenSheetMusicDisplay.ts', // Main library
  7. 'demo': './demo/index.js' // Demo index
  8. },
  9. output: {
  10. path: path.resolve(__dirname, 'build'),
  11. filename: '[name].js',
  12. library: 'opensheetmusicdisplay'
  13. },
  14. resolve: {
  15. // Add '.ts' and '.tsx' as a resolvable extension.
  16. extensions: ['.ts', '.tsx', '.js']
  17. },
  18. module: {
  19. rules: [
  20. // all files with a '.ts' or '.tsx' extension will be handled by 'ts-loader'
  21. {
  22. test: /\.ts$/,
  23. loader: 'ts-loader',
  24. exclude: /(node_modules|bower_components)/
  25. }
  26. ]
  27. },
  28. plugins: [
  29. new webpack.ProvidePlugin({
  30. $: 'jquery',
  31. jQuery: 'jquery'
  32. }),
  33. new webpack.EnvironmentPlugin({
  34. STATIC_FILES_SUBFOLDER: false, // Set to other directory if NOT using webpack-dev-server
  35. DEBUG: false,
  36. 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.
  37. }),
  38. // add a demo page to the build folder
  39. new HtmlWebpackPlugin({
  40. template: 'demo/index.html',
  41. favicon: 'demo/favicon.ico',
  42. title: 'OpenSheetMusicDisplay Demo'
  43. })
  44. ],
  45. devServer: {
  46. contentBase: [
  47. path.join(__dirname, 'test/data'),
  48. path.join(__dirname, 'build'),
  49. path.join(__dirname, 'demo')
  50. ],
  51. port: 8000,
  52. compress: false
  53. }
  54. }