xref: /expo/tools/taskfile.js (revision cd9c29bc)
1*cd9c29bcSEvan Baconconst { boolish } = require('getenv');
2*cd9c29bcSEvan Baconconst process = require('process');
3*cd9c29bcSEvan Bacon
4*cd9c29bcSEvan Baconexport async function build(task, opts) {
5*cd9c29bcSEvan Bacon  // Process JS/TS files with SWC
6*cd9c29bcSEvan Bacon  await task
7*cd9c29bcSEvan Bacon    .source('src/**/*.+(js|ts)', {
8*cd9c29bcSEvan Bacon      ignore: ['**/__tests__/**', '**/__mocks__/**'],
9*cd9c29bcSEvan Bacon    })
10*cd9c29bcSEvan Bacon    .swc('cli', { dev: opts.dev })
11*cd9c29bcSEvan Bacon    .target('build');
12*cd9c29bcSEvan Bacon
13*cd9c29bcSEvan Bacon  // Copy over JSON files
14*cd9c29bcSEvan Bacon  await task
15*cd9c29bcSEvan Bacon    .source('src/**/*.+(json)', {
16*cd9c29bcSEvan Bacon      ignore: ['**/__tests__/**', '**/__mocks__/**'],
17*cd9c29bcSEvan Bacon    })
18*cd9c29bcSEvan Bacon    .target('build');
19*cd9c29bcSEvan Bacon}
20*cd9c29bcSEvan Bacon
21*cd9c29bcSEvan Baconexport default async function (task) {
22*cd9c29bcSEvan Bacon  await task.clear('build');
23*cd9c29bcSEvan Bacon  await task.start('build', { dev: true });
24*cd9c29bcSEvan Bacon}
25*cd9c29bcSEvan Bacon
26*cd9c29bcSEvan Baconexport async function watch(task) {
27*cd9c29bcSEvan Bacon  const opts = { dev: true };
28*cd9c29bcSEvan Bacon  await task.clear('build');
29*cd9c29bcSEvan Bacon  await task.start('build', opts);
30*cd9c29bcSEvan Bacon  if (process.stdout.isTTY && !boolish('CI', false) && !boolish('EXPO_NONINTERACTIVE', false)) {
31*cd9c29bcSEvan Bacon    // Watch source folder
32*cd9c29bcSEvan Bacon    await task.watch('src/**/*.+(js|ts|json)', 'build', opts);
33*cd9c29bcSEvan Bacon  }
34*cd9c29bcSEvan Bacon}
35*cd9c29bcSEvan Bacon
36*cd9c29bcSEvan Baconexport async function release(task) {
37*cd9c29bcSEvan Bacon  await task.clear('build').start('build');
38*cd9c29bcSEvan Bacon}
39