diff --git a/cli/src/generate/grammar_files.rs b/cli/src/generate/grammar_files.rs index 9ed83c7d..0bfc777b 100644 --- a/cli/src/generate/grammar_files.rs +++ b/cli/src/generate/grammar_files.rs @@ -97,17 +97,22 @@ pub fn generate_grammar_files( fs::read_to_string(path).with_context(|| "Failed to read package.json")?; let mut package_json = serde_json::from_str::>(&package_json_str) .with_context(|| "Failed to parse package.json")?; - let package_json_main = package_json.get("main"); let package_json_types = package_json.get("types"); - let package_json_needs_update = package_json_main.map_or(true, |v| { - let main_string = v.as_str(); - main_string == Some("index.js") || main_string == Some("./index.js") - }) || package_json_types.is_none(); + let package_json_needs_update = package_json + .get("dependencies") + .map_or(false, |d| d.get("nan").is_some()) + || package_json_types.is_none(); if package_json_needs_update { - eprintln!("Updating package.json with new binding path"); - package_json.insert( - "main".to_string(), - Value::String("bindings/node".to_string()), + let dependencies = package_json + .entry("dependencies".to_string()) + .or_insert_with(|| Value::Object(Map::new())); + let dependencies = dependencies.as_object_mut().unwrap(); + if dependencies.remove("nan").is_some() { + eprintln!("Replacing package.json's nan dependency with node-addon-api"); + } + dependencies.insert( + "node-addon-api".to_string(), + Value::String("^7.1.0".to_string()), ); package_json.insert( "types".to_string(),