# 预设

## 共享依赖

默认情况下，某些 Next.js 内部结构会自动共享以优化你的应用程序。
请务必注意，手动共享这些内部结构可能会导致错误，因为它们已经为你处理了。

- `next/dynamic`
- `next/head`
- `next/link`
- `next/router`
- `next/script`
- `react`
- `react/`
- `react-dom`
- `react-dom/`
- `styled-jsx`
- `styled-jsx/style`

<details>
<summary> 点击展开 `DEFAULT_SHARE_SCOPE`:</summary>

```ts
export const DEFAULT_SHARE_SCOPE: SharedObject = {
  'next/dynamic': {
    requiredVersion: undefined,
    singleton: true,
    import: undefined,
  },
  'next/head': {
    requiredVersion: undefined,
    singleton: true,
    import: undefined,
  },
  'next/link': {
    requiredVersion: undefined,
    singleton: true,
    import: undefined,
  },
  'next/router': {
    requiredVersion: false,
    singleton: true,
    import: undefined,
  },
  'next/image': {
    requiredVersion: undefined,
    singleton: true,
    import: undefined,
  },
  'next/script': {
    requiredVersion: undefined,
    singleton: true,
    import: undefined,
  },
  react: {
    singleton: true,
    requiredVersion: false,
    import: false,
  },
  'react/': {
    singleton: true,
    requiredVersion: false,
    import: false,
  },
  'react-dom/': {
    singleton: true,
    requiredVersion: false,
    import: false,
  },
  'react-dom': {
    singleton: true,
    requiredVersion: false,
    import: false,
  },
  'react/jsx-dev-runtime': {
    singleton: true,
    requiredVersion: false,
  },
  'react/jsx-runtime': {
    singleton: true,
    requiredVersion: false,
  },
  'styled-jsx': {
    singleton: true,
    import: undefined,
    version: require('styled-jsx/package.json').version,
    requiredVersion: '^' + require('styled-jsx/package.json').version,
  },
  'styled-jsx/style': {
    singleton: true,
    import: false,
    version: require('styled-jsx/package.json').version,
    requiredVersion: '^' + require('styled-jsx/package.json').version,
  },
  'styled-jsx/css': {
    singleton: true,
    import: undefined,
    version: require('styled-jsx/package.json').version,
    requiredVersion: '^' + require('styled-jsx/package.json').version,
  },
};
```
</details>

## 导出页面

你可以通过插件自动公开所有页面

```javascript
new NextFederationPlugin({
  name: 'remoteApp',
  filename: '',
  remotes: {},
  exposes: {},
  shared: {},
  extraOptions: {
    exposePages: true
  },
});
```

这将使页面可以导入，例如：

- `import Page from 'remoteApp/pages/index'`
- `import Page from 'remoteApp/pages/shop/product'`

## 构建配置 Options

### Public Path

publicPath 设置为 "auto"

`config.output.publicPath: "auto"`

### Target

Webpack output target is set to `async-node` from `node`

`config.target = "async-node"`
