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

Posted

技术标签:

【中文标题】使用 yarn + webpack 从 fork 安装 npm 包 - 无法解析 \'./dist/【英文标题】:Installing npm package from fork with yarn + webpack - Can't resolve './dist/使用 yarn + webpack 从 fork 安装 npm 包 - 无法解析 './dist/ 【发布时间】:2017-09-10 13:05:42 【问题描述】:

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

我正在使用 yarn,我尝试使用

安装我的 fork
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 fork 进行 yarn add 会自动发布,但似乎我错了?

【问题讨论】:

我猜前叉少了点什么。尝试检查和打开问题。 @TatsuyukiIshi 即使在同一个项目的一个分支上没有额外的提交它也不起作用(当然主 repo 工作正常) 这是由于 Github 上的 repo 配置错误造成的。它缺少.npmignorepackage.json#files。有关详细信息,请参阅my answer(以及相关问题上的full version)。 【参考方案1】:

应更新包以包含prepare 步骤。

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

https://***.com/a/57503862/4612476

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

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

【讨论】:

【参考方案2】:

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

一些解决方法是:

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

参考:npm issue

【讨论】:

谢谢!我只是在编辑以添加此信息,我将查看您的链接。如果只是为了调试,我可以在本地运行脚本,但是我想保留我自己的 fork 直到 PR 通过,所以我想我必须按照你说的发布我的包,如果我想能够在生产中使用它:'( 您能否详细说明预发布所需的步骤?我尝试在 node_module 目录中 cd,运行 package.json 中的 yarnyarn run prerelease。我目前正忙于构建项目,因为它使用注释并且我显然没有预处理器,但我想检查我做的事情是否正确 prerelease 应该可以完成这项工作。您当前的错误是什么? 我实际上是在尝试直接在我的一个 webpack 应用程序的 node_module 文件夹中构建预发布版本。没有在那里工作(抱怨来自 Radium 的注释),但是当我试图将 repo 克隆到一个单独的文件夹中并运行 yarn 时,它工作得很好。所以我想我只是在新目录上进行更改,并在组件看起来准备就绪时发布它 另外,对于未来的读者来说,最后一点是,我最终用 npm 发布了我的新包,因为 yarn 的发布对我来说被破坏了(cf github.com/yarnpkg/yarn/issues/3145)

以上是关于使用 yarn + webpack 从 fork 安装 npm 包 - 无法解析 './dist/的主要内容,如果未能解决你的问题,请参考以下文章

Yarn+webpack 构建项目(二)

npm 相当于 yarn install 和 yarn webpack:build

初始webpack

没有 webpack/npm/yarn 的 Vue 组件

yarn使用,reactjs+webpack搭建,运行第一个示例

带有 Webpack 和 Yarn 的 Rails 6 上的 ActionController 路由错误