next_core/
mode.rs

1use turbo_tasks::TaskInput;
2use turbopack_ecmascript_runtime::RuntimeType;
3
4/// The mode in which Next.js is running.
5#[turbo_tasks::value(shared)]
6#[derive(Debug, Copy, Clone, TaskInput, Ord, PartialOrd, Hash)]
7pub enum NextMode {
8    /// `next dev --turbopack`
9    Development,
10    /// `next build`
11    Build,
12}
13
14impl NextMode {
15    /// Returns the NODE_ENV value for the current mode.
16    pub fn node_env(&self) -> &'static str {
17        match self {
18            NextMode::Development => "development",
19            NextMode::Build => "production",
20        }
21    }
22
23    /// Returns the exports condition for the current mode.
24    pub fn condition(&self) -> &'static str {
25        match self {
26            NextMode::Development => "development",
27            NextMode::Build => "production",
28        }
29    }
30
31    /// Returns true if the development React runtime should be used.
32    pub fn is_react_development(&self) -> bool {
33        match self {
34            NextMode::Development => true,
35            NextMode::Build => false,
36        }
37    }
38
39    pub fn is_development(&self) -> bool {
40        match self {
41            NextMode::Development => true,
42            NextMode::Build => false,
43        }
44    }
45
46    pub fn is_production(&self) -> bool {
47        match self {
48            NextMode::Development => false,
49            NextMode::Build => true,
50        }
51    }
52
53    pub fn runtime_type(&self) -> RuntimeType {
54        match self {
55            NextMode::Development => RuntimeType::Development,
56            NextMode::Build => RuntimeType::Production,
57        }
58    }
59}