使用 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,我尝试使用
安装我的 forkyarn 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 配置错误造成的。它缺少.npmignore
或package.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 中的yarn
和 yarn run prerelease
。我目前正忙于构建项目,因为它使用注释并且我显然没有预处理器,但我想检查我做的事情是否正确
prerelease
应该可以完成这项工作。您当前的错误是什么?
我实际上是在尝试直接在我的一个 webpack 应用程序的 node_module 文件夹中构建预发布版本。没有在那里工作(抱怨来自 Radium 的注释),但是当我试图将 repo 克隆到一个单独的文件夹中并运行 yarn 时,它工作得很好。所以我想我只是在新目录上进行更改,并在组件看起来准备就绪时发布它
另外,对于未来的读者来说,最后一点是,我最终用 npm 发布了我的新包,因为 yarn 的发布对我来说被破坏了(cf github.com/yarnpkg/yarn/issues/3145)以上是关于使用 yarn + webpack 从 fork 安装 npm 包 - 无法解析 './dist/的主要内容,如果未能解决你的问题,请参考以下文章
npm 相当于 yarn install 和 yarn webpack:build