move ProcessEnv into turbo-tasks-env (vercel/turbo#462)
make ProcessEnv a trait to allow other implemenetations of it
This commit is contained in:
parent
8c80ba4f78
commit
d49a9c3b9d
5 changed files with 14 additions and 8 deletions
|
@ -16,6 +16,7 @@ serde = "1.0.136"
|
|||
serde_json = "1.0.85"
|
||||
tokio = { version = "1.11.0", features = ["full"] }
|
||||
turbo-tasks = { path = "../turbo-tasks" }
|
||||
turbo-tasks-env = { path = "../turbo-tasks-env" }
|
||||
turbo-tasks-fs = { path = "../turbo-tasks-fs" }
|
||||
turbopack = { path = "../turbopack" }
|
||||
turbopack-core = { path = "../turbopack-core" }
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
use anyhow::Result;
|
||||
use turbo_tasks_env::{CommandLineProcessEnvVc, FilterProcessEnvVc, ProcessEnvVc};
|
||||
use turbo_tasks_fs::FileSystemPathVc;
|
||||
use turbopack_env::ProcessEnvVc;
|
||||
use turbopack_env::TryDotenvProcessEnvVc;
|
||||
|
||||
/// Loads a series of dotenv files according to the precedence rules set by
|
||||
/// https://nextjs.org/docs/basic-features/environment-variables#environment-variable-load-order
|
||||
#[turbo_tasks::function]
|
||||
pub async fn load_env(project_path: FileSystemPathVc) -> Result<ProcessEnvVc> {
|
||||
let node_env = std::env::var("NODE_ENV").unwrap_or_else(|_| "development".into());
|
||||
let env = CommandLineProcessEnvVc::new().as_process_env();
|
||||
let node_env = env.read("NODE_ENV").await?;
|
||||
let node_env = node_env.as_deref().unwrap_or("development");
|
||||
|
||||
let files = [
|
||||
Some(format!(".env.{node_env}.local")),
|
||||
|
@ -21,14 +24,14 @@ pub async fn load_env(project_path: FileSystemPathVc) -> Result<ProcessEnvVc> {
|
|||
.into_iter()
|
||||
.flatten();
|
||||
|
||||
let env = files.fold(ProcessEnvVc::from_command_line(), |prior, f| {
|
||||
let env = files.fold(env, |prior, f| {
|
||||
let path = project_path.join(&f);
|
||||
ProcessEnvVc::from_dotenv_file(path, Some(prior))
|
||||
TryDotenvProcessEnvVc::new(prior, path).as_process_env()
|
||||
});
|
||||
|
||||
Ok(env)
|
||||
}
|
||||
|
||||
pub fn filter_for_client(env: ProcessEnvVc) -> ProcessEnvVc {
|
||||
ProcessEnvVc::filter(env, "NEXT_PUBLIC_".to_string())
|
||||
FilterProcessEnvVc::new(env, "NEXT_PUBLIC_".to_string()).into()
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ use std::collections::HashMap;
|
|||
|
||||
use anyhow::Result;
|
||||
use turbo_tasks::Value;
|
||||
use turbo_tasks_env::ProcessEnvVc;
|
||||
use turbo_tasks_fs::FileSystemPathVc;
|
||||
use turbopack::{
|
||||
module_options::module_options_context::{ModuleOptionsContext, ModuleOptionsContextVc},
|
||||
|
@ -17,7 +18,7 @@ use turbopack_core::{
|
|||
};
|
||||
use turbopack_dev_server::html_runtime_asset::HtmlRuntimeAssetVc;
|
||||
use turbopack_ecmascript::chunk::EcmascriptChunkPlaceablesVc;
|
||||
use turbopack_env::{ProcessEnvAssetVc, ProcessEnvVc};
|
||||
use turbopack_env::ProcessEnvAssetVc;
|
||||
|
||||
use crate::{
|
||||
env::filter_for_client,
|
||||
|
|
|
@ -3,6 +3,7 @@ use std::collections::HashMap;
|
|||
use anyhow::Result;
|
||||
use serde_json::json;
|
||||
use turbo_tasks::{primitives::JsonValueVc, Value};
|
||||
use turbo_tasks_env::ProcessEnvVc;
|
||||
use turbo_tasks_fs::{DirectoryContent, DirectoryEntry, FileSystemEntryType, FileSystemPathVc};
|
||||
use turbopack::{
|
||||
module_options::ModuleOptionsContext, resolve_options_context::ResolveOptionsContext,
|
||||
|
@ -21,7 +22,7 @@ use turbopack_dev_server::source::{
|
|||
ContentSourceVc, NoContentSourceVc,
|
||||
};
|
||||
use turbopack_ecmascript::chunk::EcmascriptChunkPlaceablesVc;
|
||||
use turbopack_env::{ProcessEnvAssetVc, ProcessEnvVc};
|
||||
use turbopack_env::ProcessEnvAssetVc;
|
||||
|
||||
use crate::{
|
||||
next_client::{
|
||||
|
|
|
@ -2,6 +2,7 @@ use std::future::IntoFuture;
|
|||
|
||||
use anyhow::{anyhow, Result};
|
||||
use futures::{prelude::*, stream};
|
||||
use turbo_tasks_env::ProcessEnvVc;
|
||||
use turbo_tasks_fs::FileSystemPathVc;
|
||||
use turbopack::ecmascript::EcmascriptModuleAssetVc;
|
||||
use turbopack_core::{
|
||||
|
@ -12,7 +13,6 @@ use turbopack_dev_server::{
|
|||
html::DevHtmlAsset,
|
||||
source::{asset_graph::AssetGraphContentSourceVc, ContentSourceVc},
|
||||
};
|
||||
use turbopack_env::ProcessEnvVc;
|
||||
|
||||
use crate::next_client::context::{
|
||||
get_client_asset_context, get_client_chunking_context, get_resolved_client_runtime_entries,
|
||||
|
|
Loading…
Reference in a new issue