Giả sử:

module-A/
├── package.json
├── src/
│   └── ...
└── submodule/
    ├── package.json
    └── src/
        └── ...

Then:

{
  "name": "module-A",
  "version": "1.0.0",
  "scripts": {
    "postinstall": "cd submodule && npm install"
  },
  "dependencies": {
    // dependencies của module A
  }
}

Script postinstall sẽ chạy sau khi npm install hoàn tất việc cài đặt dependencies của module A.

git submodule init git submodule update

{
  "name": "module-A",
  "version": "1.0.0",
  "workspaces": ["submodule"],
  "dependencies": {
    // dependencies chung
  }
}

{
  "name": "submodule",
  "version": "1.0.0",
  "dependencies": {
    // dependencies riêng của submodule
  }
}

Khi sử dụng workspaces, npm install ở thư mục gốc sẽ cài đặt dependencies cho cả module A và submodule, đồng thời tối ưu hóa cấu trúc node_modules.

Prefer: https://stackoverflow.com/questions/72851445/how-to-specify-an-npm-workspace-as-a-dependency

Lưu ý: