rollup.config.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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/dependency-manager': './src/api/dependency-manager/index.ts',
  20. 'helpers/spawn': './src/helpers/spawn.ts',
  21. 'helpers/rust-cli': './src/helpers/rust-cli.ts',
  22. 'helpers/download-binary': './src/helpers/download-binary.ts'
  23. },
  24. treeshake: true,
  25. perf: true,
  26. output: [
  27. {
  28. dir: 'dist/',
  29. entryFileNames: '[name].js',
  30. format: 'esm',
  31. exports: 'named',
  32. globals: {}
  33. },
  34. {
  35. dir: 'dist/',
  36. entryFileNames: '[name].cjs',
  37. format: 'cjs',
  38. chunkFileNames: '[name]-[hash].cjs',
  39. exports: 'named',
  40. globals: {}
  41. }
  42. ],
  43. plugins: [
  44. replace({
  45. __RUST_CLI_VERSION__: JSON.stringify(cliManifest.package.version),
  46. 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV)
  47. }),
  48. commonjs({}),
  49. resolve({
  50. // pass custom options to the resolve plugin
  51. customResolveOptions: {
  52. moduleDirectories: ['node_modules']
  53. }
  54. }),
  55. typescript({
  56. tsconfig: './tsconfig.json'
  57. }),
  58. babel({
  59. configFile: false,
  60. presets: [['@babel/preset-env'], ['@babel/preset-typescript']]
  61. }),
  62. terser()
  63. ],
  64. external: [
  65. ...Object.keys(pkg.dependencies || {}),
  66. ...Object.keys(pkg.peerDependencies || {})
  67. ]
  68. }