webpack.config.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. const path = require('path')
  2. const nodeExternals = require('webpack-node-externals')
  3. const CopyWebpackPlugin = require('copy-webpack-plugin')
  4. module.exports = {
  5. entry: {
  6. 'api/build': './src/api/build.ts',
  7. 'api/dev': './src/api/dev.ts',
  8. 'api/init': './src/api/init.ts',
  9. 'api/tauricon': './src/api/tauricon.ts',
  10. 'api/info': './src/api/info.ts',
  11. 'api/dependency-manager': './src/api/dependency-manager/index.ts',
  12. 'helpers/tauri-config': './src/helpers/tauri-config.ts',
  13. 'helpers/spawn': './src/helpers/spawn.ts'
  14. },
  15. mode: process.env.NODE_ENV || 'development',
  16. devtool: 'source-map',
  17. module: {
  18. rules: [{
  19. test: /\.tsx?$/,
  20. use: 'ts-loader',
  21. exclude: /node_modules/
  22. },
  23. {
  24. test: /(templates|api)[\\/].+\.js/,
  25. use: 'raw-loader'
  26. },
  27. {
  28. test: /\.toml?$/,
  29. use: 'toml-loader'
  30. }
  31. ]
  32. },
  33. node: false,
  34. resolve: {
  35. extensions: ['.ts', '.js']
  36. },
  37. output: {
  38. library: 'tauri',
  39. libraryTarget: 'umd',
  40. filename: '[name].js',
  41. path: path.resolve(__dirname, 'dist')
  42. },
  43. externals: [nodeExternals()],
  44. target: 'node',
  45. plugins: [
  46. new CopyWebpackPlugin({
  47. patterns: [{
  48. from: './src/types/config.validator.ts',
  49. to: '../src/types/config.schema.json',
  50. transform(content) {
  51. return schemaParser('TauriConfigSchema', content.toString())
  52. }
  53. }]
  54. })
  55. ]
  56. }
  57. function schemaParser(schemaName, content) {
  58. const lines = content.split('\n')
  59. const output = []
  60. for (const line of lines) {
  61. if (line === `export const ${schemaName} = {`) {
  62. output.push('{')
  63. } else if (output.length) {
  64. if (line === '};') {
  65. output.push('}')
  66. break
  67. }
  68. output.push(line)
  69. }
  70. }
  71. return output.join("\n")
  72. }