xref: /expo/packages/@expo/cli/taskfile.js (revision a7112dad)
1const { boolish } = require('getenv');
2const process = require('process');
3
4export async function bin(task, opts) {
5  await task
6    .source(opts.src || 'bin/*')
7    .swc('cli', { stripExtension: true, dev: opts.dev })
8    .target('build/bin', { mode: '0755' });
9}
10
11export async function cli(task, opts) {
12  await task
13    .source('src/**/*.+(js|ts)', {
14      ignore: ['**/__tests__/**', '**/__mocks__/**'],
15    })
16    .swc('cli', { dev: opts.dev })
17    .target('build/src');
18}
19
20export async function build(task, opts) {
21  await task.parallel(['cli', 'bin'], opts);
22}
23
24export async function src(task, opts) {
25  await task
26    .source(opts.src || 'src/**/*.+(js|ts|tsx)', {
27      ignore: ['**/__tests__/**', '**/__mocks__/**'],
28    })
29    .swc('sdk', { dev: opts.dev })
30    .target('build');
31}
32
33export default async function (task) {
34  const opts = { dev: true };
35  await task.clear('build');
36  await task.start('build', opts);
37  if (process.stdout.isTTY && !boolish('CI', false) && !boolish('EXPO_NONINTERACTIVE', false)) {
38    await task.watch('bin/*', 'bin', opts);
39    await task.watch('src/**/*.+(js|ts)', 'src', opts);
40  }
41}
42
43export async function release(task) {
44  await task.clear('build').start('build');
45}
46