javascript - 在处理 monorepo 时如何正确使用 lerna 和 webpack

标签 javascript webpack lerna

我正在构建一个 monorepo,它将包含使用 React 构建的 UI 套件的所有单个组件。

我正在使用 lerna因为我没有配置 monorepo/multi packages 的经验,所以现在我有这样的结构:

index.js
packages/
  pack1/
  pack2/

我想用 webpack 构建每个包,但只想在根文件夹中使用一个 webpack.config.js 和一个命令来创建一个 pack*.dist.js 在每个包目录中。

这可能吗?有什么方向吗?

最佳答案

这个问题是相当笼统的开放式问题,但这是一个开始。

I want to build every package with webpack but want to use only a single webpack.config.js in the root folder and a single command to create a pack*.dist.js in every package directory.

Is it possible? Any direction?

是的,这是可能的。您需要在 webpack.config.js 文件中将 pack1pack2 列为 entry。您可能还想将所有常见的第三方和内部依赖项捆绑在 vendor bundle 中。

使用 webpack 配置,例如:

let entries = {
  pack1: 'path/to/entry/point/pack1',
  pack2: 'path/to/entry/point/pack2'
};

export default {
  entry: { ...entries },
  module: {
    rules: [
      {
        // ... usual rule config props
        include: [
          '/path/to/pack1/src-for-rule',
          '/path/to/pack2/src-for-rule'
        ]
      }
    ]
  },
  plugins: [
    new webpack.optimize.CommonsChunkPlugin({
        name: 'vendor',
        chunks: Object.keys(entries),
        minChunks: (module) => {
            return /node_modules/.test(module.context);
        }
    }),
    new webpack.optimize.CommonsChunkPlugin({
        name: 'common',
        chunks: Object.keys(entries),
        minChunks: Object.keys(entries).length
    })
  ]
}

如何将 bundle 编织成一个“应用程序”由您决定。

关于javascript - 在处理 monorepo 时如何正确使用 lerna 和 webpack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46767844/

相关文章:

javascript - 使用 DOM 设置背景大小?

javascript - 使用 javascript 将 css 系统颜色转换为十六进制?

reactjs - "react-hot-loader/babel"破坏了我的构建——为什么需要它?

javascript - 如何将 Storybook 配置为从项目根目录以外的目录运行

javascript - div 重叠正文内容

javascript - Vue - 脚本设置数据以编写图表脚本

javascript - CSS 加载器和提取文本插件用例 Webpack

javascript - 为什么我的 Webpack Sass 配置不起作用?

reactjs - 使用 React 从 monorepo 中的另一个包导入 JSX 文件时出错

npm - 允许本地项目依赖本地lerna包