1

我想要达到的目标

我正在尝试将纱线工作区中的语言环境文件同步到 monorepo 中的多个 Vue 应用程序,以便它们可以在每个应用程序中与 i18next 一起使用。他们需要:

  • 在开发过程中保持同步
  • 翻译文件更新时自动更新
  • 最终将它们放在 dist 文件夹中,以便它们与应用程序的其余部分一起部署(当文件位于公用文件夹中时,这应该会自动发生)

为了保持包的大小,我不能只捆绑整个包 - 需要使用原始文件名单独复制文件并存储在每个应用程序的公共文件夹和 UI 库中。

问题

我正在尝试配置CopyWebpackPlugin,但我要么

  • 只是在启动开发服务器时从翻译/区域设置到公共/区域设置的初始副本
  • 或者当我尝试启用该选项时,开发服务器会进入一个循环,并且它开始用热重载文件writeToDisk淹没文件夹。dist

我的 vue.config.js *

module.exports = {
  devServer: {
    writeToDisk: true,
  },
  configureWebpack: {
    plugins: [
      new CopyPlugin({
        patterns: [
          {
            from: `${path.dirname(
              require.resolve(`@namespace/translations/package.json`)
            )}/locales`,
            to: "./public/locales",
            toType: "dir",
          },
        ],
      }),
    ],
  },

*基于https://webpack.js.org/plugins/copy-webpack-plugin/的说明,它包括对纱线工作区的引用

使用此配置运行yarn serve会导致循环。正确的文件被复制到./public文件夹中,但与此同时,它会创建./dist文件夹并用文件淹没它 ...hot-update.json

如果我yarn build第一次运行,语言环境文件会被复制到./public文件夹中,而不是./dist文件夹中(因此它似乎在进程结束时复制文件,因此最新文件不包含在./dist文件夹中

当前文件夹结构

Monorepo
└── packages
    ├── applications
    │   ├── app1
    │   │   ├── public
    │   │   └── dist
    │   ├── app2
    │   └── ...
    └── common
        ├── translations
        │   └── locales
        │       ├── en-GB
        │       │   └── common.json
        │       └── de-DE
        ├── ui
        └── ...

版本

@vue/cli 4.5.12
webpack@4.46.0
copy-webpack-plugin@6.4.1

任何有关使此设置正常工作的帮助将不胜感激。

4

0 回答 0