Merge pull request #1061 from gthb/esm-type-and-main-in-package-json

fix: declare ES module in package.json
master
Jesper Håkansson 1 year ago committed by GitHub
commit 77b8ced6bc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      src/manifest/mod.rs
  2. 4
      src/manifest/npm/esmodules.rs
  3. 17
      tests/all/manifest.rs
  4. 2
      tests/all/utils/manifest.rs

@ -722,6 +722,7 @@ impl CrateData {
NpmPackage::ESModulesPackage(ESModulesPackage {
name: data.name,
ty: "module".into(),
collaborators: pkg.authors.clone(),
description: self.pkg().description.clone(),
version: pkg.version.to_string(),
@ -731,7 +732,7 @@ impl CrateData {
url: repo_url,
}),
files: data.files,
module: data.main.clone(),
main: data.main.clone(),
homepage: data.homepage,
types: data.dts_file,
side_effects: vec![format!("./{}", data.main), "./snippets/*".to_owned()],
@ -754,6 +755,7 @@ impl CrateData {
NpmPackage::ESModulesPackage(ESModulesPackage {
name: data.name,
ty: "module".into(),
collaborators: pkg.authors.clone(),
description: self.pkg().description.clone(),
version: pkg.version.to_string(),
@ -763,7 +765,7 @@ impl CrateData {
url: repo_url,
}),
files: data.files,
module: data.main,
main: data.main,
homepage: data.homepage,
types: data.dts_file,
side_effects: vec!["./snippets/*".to_owned()],

@ -5,6 +5,8 @@ use crate::manifest::npm::repository::Repository;
#[derive(Serialize)]
pub struct ESModulesPackage {
pub name: String,
#[serde(rename = "type")]
pub ty: String,
#[serde(skip_serializing_if = "Vec::is_empty")]
pub collaborators: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
@ -16,7 +18,7 @@ pub struct ESModulesPackage {
pub repository: Option<Repository>,
#[serde(skip_serializing_if = "Vec::is_empty")]
pub files: Vec<String>,
pub module: String,
pub main: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub homepage: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]

@ -86,12 +86,13 @@ fn it_creates_a_package_json_default_path() {
utils::manifest::read_package_json(&fixture.path, &out_dir).unwrap();
let pkg = utils::manifest::read_package_json(&fixture.path, &out_dir).unwrap();
assert_eq!(pkg.name, "js-hello-world");
assert_eq!(pkg.ty, "module");
assert_eq!(pkg.repository.ty, "git");
assert_eq!(
pkg.repository.url,
"https://github.com/rustwasm/wasm-pack.git"
);
assert_eq!(pkg.module, "js_hello_world.js");
assert_eq!(pkg.main, "js_hello_world.js");
assert_eq!(pkg.types, "js_hello_world.d.ts");
assert_eq!(
pkg.side_effects,
@ -125,7 +126,8 @@ fn it_creates_a_package_json_provided_path() {
utils::manifest::read_package_json(&fixture.path, &out_dir).unwrap();
let pkg = utils::manifest::read_package_json(&fixture.path, &out_dir).unwrap();
assert_eq!(pkg.name, "js-hello-world");
assert_eq!(pkg.module, "js_hello_world.js");
assert_eq!(pkg.ty, "module");
assert_eq!(pkg.main, "js_hello_world.js");
let actual_files: HashSet<String> = pkg.files.into_iter().collect();
let expected_files: HashSet<String> = [
@ -154,7 +156,8 @@ fn it_creates_a_package_json_provided_path_with_scope() {
utils::manifest::read_package_json(&fixture.path, &out_dir).unwrap();
let pkg = utils::manifest::read_package_json(&fixture.path, &out_dir).unwrap();
assert_eq!(pkg.name, "@test/js-hello-world");
assert_eq!(pkg.module, "js_hello_world.js");
assert_eq!(pkg.ty, "module");
assert_eq!(pkg.main, "js_hello_world.js");
let actual_files: HashSet<String> = pkg.files.into_iter().collect();
let expected_files: HashSet<String> = [
@ -251,12 +254,13 @@ fn it_creates_a_package_json_with_correct_files_when_out_name_is_provided() {
utils::manifest::read_package_json(&fixture.path, &out_dir).unwrap();
let pkg = utils::manifest::read_package_json(&fixture.path, &out_dir).unwrap();
assert_eq!(pkg.name, "js-hello-world");
assert_eq!(pkg.ty, "module");
assert_eq!(pkg.repository.ty, "git");
assert_eq!(
pkg.repository.url,
"https://github.com/rustwasm/wasm-pack.git"
);
assert_eq!(pkg.module, "index.js");
assert_eq!(pkg.main, "index.js");
assert_eq!(pkg.types, "index.d.ts");
assert_eq!(pkg.side_effects, vec!["./index.js", "./snippets/*"]);
@ -298,12 +302,13 @@ fn it_creates_a_package_json_with_correct_keys_when_types_are_skipped() {
utils::manifest::read_package_json(&fixture.path, &out_dir).unwrap();
let pkg = utils::manifest::read_package_json(&fixture.path, &out_dir).unwrap();
assert_eq!(pkg.name, "js-hello-world");
assert_eq!(pkg.ty, "module");
assert_eq!(pkg.repository.ty, "git");
assert_eq!(
pkg.repository.url,
"https://github.com/rustwasm/wasm-pack.git"
);
assert_eq!(pkg.module, "js_hello_world.js");
assert_eq!(pkg.main, "js_hello_world.js");
let actual_files: HashSet<String> = pkg.files.into_iter().collect();
let expected_files: HashSet<String> = [
@ -344,7 +349,7 @@ fn it_creates_a_package_json_with_npm_dependencies_provided_by_wasm_bindgen() {
pkg.repository.url,
"https://github.com/rustwasm/wasm-pack.git"
);
assert_eq!(pkg.module, "js_hello_world.js");
assert_eq!(pkg.main, "js_hello_world.js");
let actual_files: HashSet<String> = pkg.files.into_iter().collect();
let expected_files: HashSet<String> = [

@ -8,6 +8,8 @@ use serde_json;
#[derive(Deserialize)]
pub struct NpmPackage {
pub name: String,
#[serde(default = "default_none", rename = "type")]
pub ty: String,
pub description: String,
pub version: String,
pub license: String,

Loading…
Cancel
Save