@revideo/create 0.1.5 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.js CHANGED
@@ -29,7 +29,7 @@ const PLUGINS = {
29
29
  ffmpeg: {
30
30
  package: '@revideo/ffmpeg',
31
31
  variable: 'ffmpeg',
32
- version: '^0.1.2',
32
+ version: '^0.1.5',
33
33
  },
34
34
  };
35
35
 
@@ -63,7 +63,7 @@ const PLUGINS = {
63
63
  type: 'text',
64
64
  name: 'name',
65
65
  message: 'Project name',
66
- initial: 'my-animation',
66
+ initial: 'my-revideo-project',
67
67
  validate: value =>
68
68
  isValidPackageName(value)
69
69
  ? true
@@ -95,76 +95,28 @@ const PLUGINS = {
95
95
  },
96
96
  format: value => path.resolve(value),
97
97
  },
98
- {
99
- type: 'select',
100
- name: 'language',
101
- message: 'Language',
102
- choices: [
103
- {
104
- title: 'TypeScript (Recommended)',
105
- value: 'ts',
106
- },
107
- {
108
- title: 'JavaScript',
109
- value: 'js',
110
- },
111
- ],
112
- },
113
- {
114
- type: 'multiselect',
115
- name: 'plugins',
116
- message: 'How would you like to render your animation?',
117
- choices: [
118
- {
119
- title: 'Image sequence',
120
- value: 'core',
121
- disabled: true,
122
- selected: true,
123
- },
124
- {
125
- title: 'Video (FFmpeg)',
126
- value: 'ffmpeg',
127
- selected: true,
128
- },
129
- ],
130
- warn: 'This option is always included.',
131
- onRender() {
132
- this.value[0].selected = true;
133
- },
134
- validate: value => {
135
- if (!Array.isArray(value)) {
136
- return '"plugins" option must be an array.';
137
- }
138
-
139
- if (!value.includes('core')) {
140
- return 'Image sequence is required.';
141
- }
142
-
143
- return true;
144
- },
145
- },
146
98
  ]);
147
99
 
148
- if (!response.plugins) {
100
+ if (!response.path) {
149
101
  console.log(kleur.red('× Scaffolding aborted by the user.\n'));
150
102
  return;
151
103
  }
152
104
 
105
+ const plugins = [PLUGINS.core, PLUGINS.ffmpeg];
153
106
  const templateDir = path.resolve(
154
107
  fileURLToPath(import.meta.url),
155
108
  '..',
156
- `template-2d-${response.language}`,
109
+ `template-2d-ts`,
157
110
  );
158
111
  copyDirectory(templateDir, response.path);
159
- createConfig(response);
112
+ createConfig(response, plugins);
160
113
 
161
114
  const manifest = JSON.parse(
162
115
  fs.readFileSync(path.join(templateDir, `package.json`), 'utf-8'),
163
116
  );
164
117
  manifest.name = response.name;
165
118
  manifest.dependencies ??= {};
166
- for (const plugin of response.plugins) {
167
- const data = PLUGINS[plugin];
119
+ for (const data of plugins) {
168
120
  if (data.version) {
169
121
  manifest.dependencies[data.package] = data.version;
170
122
  }
@@ -226,27 +178,27 @@ function copy(src, dest) {
226
178
  }
227
179
  }
228
180
 
229
- function createConfig(response) {
181
+ function createConfig(response, selectedPlugins) {
230
182
  const imports = [];
231
183
  const plugins = [];
232
- for (const plugin of response.plugins) {
233
- const data = PLUGINS[plugin];
184
+ for (const data of selectedPlugins) {
234
185
  imports.push(`import ${data.variable} from '${data.package}';\n`);
235
186
  plugins.push(`${data.variable}(${data.options?.(response) ?? ''}),`);
236
187
  }
237
188
 
238
- const configFile = path.resolve(
239
- response.path,
240
- `vite.config.${response.language}`,
241
- );
189
+ imports.push("import { rendererPlugin } from 'revideo/renderer';");
190
+ plugins.push('rendererPlugin()');
191
+
192
+ const configFile = path.resolve(response.path, `vite.config.ts`);
242
193
 
243
194
  fs.writeFileSync(
244
195
  configFile,
245
196
  `import {defineConfig} from 'vite';
246
197
  ${imports.join('')}
198
+ import { rendererPlugin } from '@revideo/renderer';
247
199
  export default defineConfig({
248
200
  plugins: [
249
- ${plugins.join('\n ')}
201
+ ${plugins.join('\n ')},
250
202
  ],
251
203
  });
252
204
  `,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@revideo/create",
3
- "version": "0.1.5",
3
+ "version": "0.1.8",
4
4
  "description": "Quickly scaffold revideo projects",
5
5
  "main": "index.js",
6
6
  "author": "revideo",
@@ -20,14 +20,15 @@
20
20
  "url": "https://github.com/havenhq/revideo.git"
21
21
  },
22
22
  "devDependencies": {
23
- "@revideo/2d": "^0.1.5",
24
- "@revideo/core": "^0.1.5",
25
- "@revideo/ui": "^0.1.5",
26
- "@revideo/vite-plugin": "^0.1.5"
23
+ "@revideo/2d": "^0.1.8",
24
+ "@revideo/core": "^0.1.8",
25
+ "@revideo/renderer": "^0.1.8",
26
+ "@revideo/ui": "^0.1.8",
27
+ "@revideo/vite-plugin": "^0.1.8"
27
28
  },
28
29
  "dependencies": {
29
30
  "minimist": "^1.2.8",
30
31
  "prompts": "^2.4.2"
31
32
  },
32
- "gitHead": "96a2de236b225a3565aa353f5d908bbcd367eff9"
33
+ "gitHead": "308ff0a4c35544fe0182d1037914f5ee02639f0b"
33
34
  }
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
@@ -5,15 +5,17 @@
5
5
  "scripts": {
6
6
  "start": "vite",
7
7
  "serve": "vite",
8
- "build": "tsc && vite build"
8
+ "build": "tsc && vite build",
9
+ "render": "tsc && node dist/render.js"
9
10
  },
10
11
  "dependencies": {
11
- "@revideo/core": "*",
12
- "@revideo/2d": "*"
12
+ "@revideo/core": "^0.1.7",
13
+ "@revideo/2d": "^0.1.7",
14
+ "@revideo/renderer": "^0.1.7"
13
15
  },
14
16
  "devDependencies": {
15
- "@revideo/ui": "*",
16
- "@revideo/vite-plugin": "*",
17
+ "@revideo/ui": "^0.1.7",
18
+ "@revideo/vite-plugin": "^0.1.7",
17
19
  "typescript": "^5.2.2",
18
20
  "vite": "^4.5"
19
21
  }
@@ -0,0 +1,31 @@
1
+ {
2
+ "version": 0,
3
+ "shared": {
4
+ "background": null,
5
+ "range": [
6
+ 0,
7
+ null
8
+ ],
9
+ "size": {
10
+ "x": 1920,
11
+ "y": 1080
12
+ },
13
+ "audioOffset": 0
14
+ },
15
+ "preview": {
16
+ "fps": 30,
17
+ "resolutionScale": 1
18
+ },
19
+ "rendering": {
20
+ "fps": 30,
21
+ "resolutionScale": 1,
22
+ "colorSpace": "srgb",
23
+ "exporter": {
24
+ "name": "@revideo/ffmpeg",
25
+ "options": {
26
+ "fastStart": true,
27
+ "includeAudio": true
28
+ }
29
+ }
30
+ }
31
+ }
@@ -0,0 +1,3 @@
1
+ import {renderVideo} from '@revideo/renderer';
2
+
3
+ renderVideo('./vite.config.ts');
@@ -1,12 +1,38 @@
1
- import {Circle, makeScene2D} from '@revideo/2d';
2
- import {createRef} from '@revideo/core';
1
+ import {Audio, Img, Video, makeScene2D} from '@revideo/2d';
2
+ import {all, chain, createRef, waitFor} from '@revideo/core';
3
3
 
4
4
  export default makeScene2D(function* (view) {
5
- // Create your animations here
5
+ const logoRef = createRef<Img>();
6
6
 
7
- const circle = createRef<Circle>();
7
+ yield view.add(
8
+ <>
9
+ <Video
10
+ src={'https://revideo-example-assets.s3.amazonaws.com/stars.mp4'}
11
+ size={['100%', '100%']}
12
+ play={true}
13
+ />
14
+ <Audio
15
+ src={'https://revideo-example-assets.s3.amazonaws.com/chill-beat.mp3'}
16
+ play={true}
17
+ time={17.0}
18
+ />
19
+ </>,
20
+ );
8
21
 
9
- view.add(<Circle ref={circle} size={320} fill={'lightseagreen'} />);
22
+ yield* waitFor(1);
10
23
 
11
- yield* circle().scale(2, 2).to(1, 2);
24
+ view.add(
25
+ <Img
26
+ width={'1%'}
27
+ ref={logoRef}
28
+ src={
29
+ 'https://revideo-example-assets.s3.amazonaws.com/revideo-logo-white.png'
30
+ }
31
+ />,
32
+ );
33
+
34
+ yield* chain(
35
+ all(logoRef().scale(40, 2), logoRef().rotation(360, 2)),
36
+ logoRef().scale(60, 1),
37
+ );
12
38
  });
@@ -1,4 +1,9 @@
1
1
  {
2
2
  "extends": "@revideo/2d/tsconfig.project.json",
3
- "include": ["src"]
3
+ "include": ["src"],
4
+ "compilerOptions": {
5
+ "noEmit": false,
6
+ "outDir": "dist",
7
+ "module": "CommonJS"
8
+ }
4
9
  }
@@ -1,15 +0,0 @@
1
- # Generated files
2
- node_modules
3
- output
4
- dist
5
-
6
- # Editor directories and files
7
- .vscode/*
8
- !.vscode/extensions.json
9
- .idea
10
- .DS_Store
11
- *.suo
12
- *.ntvs*
13
- *.njsproj
14
- *.sln
15
- *.sw?
@@ -1,19 +0,0 @@
1
- {
2
- "name": "2d-starter",
3
- "private": true,
4
- "version": "0.0.0",
5
- "scripts": {
6
- "start": "vite",
7
- "serve": "vite",
8
- "build": "vite build"
9
- },
10
- "dependencies": {
11
- "@revideo/core": "*",
12
- "@revideo/2d": "*"
13
- },
14
- "devDependencies": {
15
- "@revideo/ui": "*",
16
- "@revideo/vite-plugin": "*",
17
- "vite": "^4.5"
18
- }
19
- }
File without changes
@@ -1,7 +0,0 @@
1
- import {makeProject} from '@revideo/core';
2
-
3
- import example from './scenes/example?scene';
4
-
5
- export default makeProject({
6
- scenes: [example],
7
- });
@@ -1,12 +0,0 @@
1
- import {Circle, makeScene2D} from '@revideo/2d';
2
- import {createRef} from '@revideo/core';
3
-
4
- export default makeScene2D(function* (view) {
5
- // Create your animations here
6
-
7
- const circle = createRef();
8
-
9
- view.add(<Circle ref={circle} size={320} fill={'lightseagreen'} />);
10
-
11
- yield* circle().scale(2, 2).to(1, 2);
12
- });
@@ -1,15 +0,0 @@
1
- # Generated files
2
- node_modules
3
- output
4
- dist
5
-
6
- # Editor directories and files
7
- .vscode/*
8
- !.vscode/extensions.json
9
- .idea
10
- .DS_Store
11
- *.suo
12
- *.ntvs*
13
- *.njsproj
14
- *.sln
15
- *.sw?