-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathrollup.config.mjs
86 lines (82 loc) · 2.37 KB
/
rollup.config.mjs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import * as fs from 'fs';
import * as path from 'path';
import typescript from '@rollup/plugin-typescript';
import pkg from './package.json';
import commonjs from '@rollup/plugin-commonjs';
import resolve from '@rollup/plugin-node-resolve';
import copy from 'rollup-plugin-copy';
const banner = `/**
* ${pkg.name}
* ${pkg.description}
* @version: ${pkg.version}
* @author: ${pkg.author}
* @license: ${pkg.license}
**/
`;
export default [
{
input: 'src/virtual_background.ts',
plugins: [
typescript({module: "esnext"}),
commonjs(),
resolve(),
mediapipe_workaround(),
copy({
targets: [{
src: [
// node_modulesの場所が変わることがあるので、両方のパターンに対応しておく
'./node_modules/@mediapipe/selfie_segmentation/*.wasm',
'./node_modules/@mediapipe/selfie_segmentation/*.tflite',
'./node_modules/@mediapipe/selfie_segmentation/*.binarypb',
'./node_modules/@mediapipe/selfie_segmentation/*wasm_bin.js',
'../../node_modules/@mediapipe/selfie_segmentation/*.wasm',
'../../node_modules/@mediapipe/selfie_segmentation/*.tflite',
'../../node_modules/@mediapipe/selfie_segmentation/*.binarypb',
'../../node_modules/@mediapipe/selfie_segmentation/*wasm_bin.js'
],
dest: 'dist/'
}]
})
],
output: {
sourcemap: false,
file: './dist/virtual_background.js',
format: 'umd',
name: 'Shiguredo',
extend: true,
banner: banner,
}
},
{
input: 'src/virtual_background.ts',
plugins: [
typescript({module: "esnext"}),
commonjs(),
resolve(),
mediapipe_workaround()
],
output: {
sourcemap: false,
file: './dist/virtual_background.mjs',
format: 'module',
name: 'Shiguredo',
extend: true,
banner: banner,
}
},
];
// https://github.com/google/mediapipe/issues/2883 が本家で対応されるまでのワークアラウンド
function mediapipe_workaround() {
return {
name: 'mediapipe_workaround',
load(id) {
if (path.basename(id) === 'selfie_segmentation.js') {
let code = fs.readFileSync(id, 'utf-8');
code += 'exports.SelfieSegmentation = SelfieSegmentation;';
return {code};
} else {
return null;
}
},
};
}