webpack.common.js 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. globalObject: 'this'
  15. },
  16. resolve: {
  17. alias: {
  18. handlebars: 'handlebars/dist/handlebars.min.js'
  19. },
  20. // Add '.ts' and '.tsx' as a resolvable extension.
  21. extensions: ['.ts', '.tsx', '.js'],
  22. },
  23. module: {
  24. rules: [
  25. // all files with a '.ts' or '.tsx' extension will be handled by 'ts-loader'
  26. {
  27. test: /\.ts$/,
  28. loader: 'ts-loader',
  29. // loader: 'awesome-typescript-loader',
  30. exclude: /(node_modules|bower_components)/
  31. },
  32. // all html files will be handled by html-loader
  33. {
  34. test: /\.html$/i,
  35. loader: 'html-loader',
  36. exclude: /(node_modules|bower_components|demo|build|bin)/
  37. },
  38. {
  39. test: /\.json5$/i,
  40. loader: 'json5-loader',
  41. type: 'javascript/auto',
  42. exclude: /(node_modules|bower_components|demo|build|bin)/
  43. },
  44. {
  45. test: /\.glsl$/,
  46. type: "asset/source",
  47. exclude: /(node_modules|bower_components)/
  48. }
  49. ]
  50. },
  51. plugins: [
  52. new webpack.ProvidePlugin({
  53. $: 'jquery',
  54. jQuery: 'jquery'
  55. }),
  56. new webpack.EnvironmentPlugin({
  57. STATIC_FILES_SUBFOLDER: false, // Set to other directory if NOT using webpack-dev-server
  58. DEBUG: false,
  59. 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.
  60. }),
  61. // add a demo page to the build folder
  62. new HtmlWebpackPlugin({
  63. template: 'demo/index.html',
  64. favicon: 'demo/favicon.ico',
  65. title: 'OpenSheetMusicDisplay Demo'
  66. })
  67. ],
  68. devServer: {
  69. static: [
  70. path.join(__dirname, 'test/data'),
  71. path.join(__dirname, 'build'),
  72. path.join(__dirname, 'demo')
  73. ],
  74. port: 8001,
  75. compress: false
  76. }
  77. }