rollup.config.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. // Copyright 2019-2021 Tauri Programme within The Commons Conservancy
  2. // SPDX-License-Identifier: Apache-2.0
  3. // SPDX-License-Identifier: MIT
  4. // rollup.config.js
  5. import { readFileSync } from 'fs'
  6. import { terser } from 'rollup-plugin-terser'
  7. import resolve from '@rollup/plugin-node-resolve'
  8. import commonjs from '@rollup/plugin-commonjs'
  9. import babel from '@rollup/plugin-babel'
  10. import typescript from '@rollup/plugin-typescript'
  11. import pkg from './package.json'
  12. import replace from '@rollup/plugin-replace'
  13. import TOML from '@tauri-apps/toml'
  14. const cliManifestContents = readFileSync('../cli.rs/Cargo.toml').toString()
  15. const cliManifest = TOML.parse(cliManifestContents)
  16. export default {
  17. input: {
  18. 'api/cli': './src/api/cli.ts',
  19. 'api/tauricon': './src/api/tauricon.ts',
  20. 'api/dependency-manager': './src/api/dependency-manager/index.ts',
  21. 'helpers/spawn': './src/helpers/spawn.ts',
  22. 'helpers/rust-cli': './src/helpers/rust-cli.ts',
  23. 'helpers/download-binary': './src/helpers/download-binary.ts'
  24. },
  25. treeshake: true,
  26. perf: true,
  27. output: [
  28. {
  29. dir: 'dist/',
  30. entryFileNames: '[name].js',
  31. format: 'esm',
  32. exports: 'named',
  33. globals: {}
  34. },
  35. {
  36. dir: 'dist/',
  37. entryFileNames: '[name].cjs',
  38. format: 'cjs',
  39. chunkFileNames: '[name]-[hash].cjs',
  40. exports: 'named',
  41. globals: {}
  42. }
  43. ],
  44. plugins: [
  45. replace({
  46. __RUST_CLI_VERSION__: JSON.stringify(cliManifest.package.version),
  47. 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV)
  48. }),
  49. commonjs({}),
  50. resolve({
  51. // pass custom options to the resolve plugin
  52. customResolveOptions: {
  53. moduleDirectories: ['node_modules']
  54. }
  55. }),
  56. typescript({
  57. tsconfig: './tsconfig.json'
  58. }),
  59. babel({
  60. configFile: false,
  61. presets: [['@babel/preset-env'], ['@babel/preset-typescript']]
  62. }),
  63. terser()
  64. ],
  65. external: [
  66. ...Object.keys(pkg.dependencies || {}),
  67. ...Object.keys(pkg.peerDependencies || {})
  68. ]
  69. }