使用 yarn + webpack 从 fork 安装 npm 包 - 无法解析'./dist/

Installing npm package from fork with yarn + webpack - Can't resolve './dist/

我想为开源 React 组件做贡献,我想在我的 webpack 包中使用该项目的分支。

我正在使用纱线,我尝试使用

安装我的叉子
yarn add github:Startouf/react-coverflow

但是,当 webpack 尝试编译我的包时,它会引发奇怪的错误

ERROR in ./~/react-coverflow/main.js
Module not found: Error: Can't resolve './dist/react-coverflow' in '/Users/Cyril/dev/MyApp/client/node_modules/react-coverflow'

我是不是漏掉了什么?

编辑:当我使用 npm 发布的包时,节点模块文件夹包含

LICENSE     README.md   dist        main.js     package.json

当我使用 fork 时,项目似乎没有编译并包含

LICENSE         README.md       package.json        src         webpack.config.js
Makefile        main.js         site            test

好像我错过了一步......我虽然用 github 叉子做 yarn add 会自动发布但我好像错了?

不幸的是,直接使用存储库作为源可能会导致执行错误。这是因为它根本没有捆绑,而软件包需要 dist 中存在的预构建版本。捆绑脚本通常在发布到 npm 之前执行。

一些解决方法是:

  • 在目标目录中执行预发布步骤(这取决于 项目使用什么)
  • 当然,使用发布的版本是最好的。在 npm 上创建您自己的包并上传它。

参考文献:npm issue

应该更新包以包含 prepare 步骤。

一个 prepare 步骤在所有情况下都完全符合您的要求。

您可以自己在 package.json#scripts 中添加 prepare 脚本,运行 构建。然后,Npm 和 Yarn 将自动 运行 直接从 GitHub 安装准备脚本。然后你可以像对待任何其他包一样对待它,它总是 just work™.

不要忘记 package.json#files 部分。有关详细信息,请参阅链接的答案。