Используйте соответствующие модули дочернего пакета при выполнении пакета - PullRequest
1 голос
/ 06 апреля 2019

Настройка

Я создал проект с пакетами по 3 npm;корень, клиент и сервер.Каждый пакет содержит зависимости, которые им конкретно нужны;У root есть инструменты для сборки, у клиента есть реакция, у сервера есть экспресс - вы поняли.

Теперь ... Я понимаю, что это может быть плохой идеей, так как я теряю некоторую синергию из-за того, что она находится в том же месте, но я осознаю,это часть того, почему я это делаю.

/node_modules
/package.json
/webpack.config.js
/...etc

/dist
├── server-bundle.js
└── client-bundle.js

/client
├── node_modules/
├── package.json
└── src/

/server
├── node_modules/
├── package.json
└── src/
    └── index.ts

Конфигурация веб-пакета:

module.exports = [
  {
    entry: "./client/src/index.tsx",
    mode: "development",
    output: {
      filename: "client-bundle.js",
      path: __dirname + "/dist"
    },
    devtool: "source-map",
    resolve: {
      extensions: [".ts", ".tsx", ".js", ".json"]
    },

    module: {
      noParse: /node_modules/,
      rules: [
        { test: /\.tsx?$/, loader: "ts-loader" },
        { enforce: "pre", test: /\.js$/, loader: "source-map-loader" }
      ]
    },
    externals: {
      "react": "React",
      "react-dom": "ReactDOM"
    },
  },
  {
    entry: "./server/src/index.ts",
    mode: "development",
    output: {
      filename: "server-bundle.js",
      path: __dirname + "/dist"
    },
    resolve: {
      extensions: [".ts", "tsx", ".js", ".json"]
    },

    module: {
      noParse: /node_modules/,
      rules: [
        { test: /\.tsx?$/, loader: "ts-loader" },
      ],
    },
  }
];

Проблема

Сборка и комплектация работают нормально, но при запуске сервера node dist/server-bundle.js Я получаю сообщение об ошибке этого узла Cannot find the modules 'express', поскольку корневой пакет не имеет этой зависимости.

Перемещение всех зависимостей в корень решит все проблемы.

Вопрос

Есть ли способ заставить его работать с этой структурой, или я ошибаюсь в своем концептуальном подходе

1 Ответ

1 голос
/ 07 апреля 2019

Просто переместите /dist/ в проекты, client/dist/ и server/dist/ в вашем случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...