首页 > 解决方案 > 在 nx 构建/部署上生成 package.json

问题描述

我有一个使用 nx 和多个 node/nestjs 应用程序的 monorepo。某些应用程序不需要其他应用程序中使用的所有包。因为它是一个 monorepo,所以我需要在部署期间为每个应用程序安装所有包。

有没有办法在构建时生成一个 package.json,它只包含我正在构建的应用程序所需的包?

我尝试使用“generate-package-json-webpack-plugin”来生成 package.json,但它只检测到一半的依赖项。

我还尝试构建一个包含所有应用程序的单个 js 文件,但它似乎不起作用并且总是需要 tslib。

标签: nestjsnrwl-nx

解决方案


在我查看 nx 源代码后,我找到了答案。

设置在where 。generatePackageJson_trueworkspace.json<project-name>/targets/build/options

这将为您生成 package.json 并为您的应用程序提供必要的依赖项。

这里的例子:

"node-api": {
      "root": "apps/node-api",
      "sourceRoot": "apps/node-api/src",
      "projectType": "application",
      "prefix": "node-api",
      "targets": {
        "build": {
          "executor": "@nrwl/node:build",
          "outputs": ["{options.outputPath}"],
          "options": {
            "showCircularDependencies": false,
            "outputPath": "dist/apps/node-api",
            "main": "apps/node-api/src/main.ts",
            "tsConfig": "apps/node-api/tsconfig.app.json",
            "assets": ["apps/node-api/src/assets"],
            "generatePackageJson": true <----------------------
          },
....

推荐阅读