我们有一个使用NPM作为其包管理器的项目。我们使用Webpack构建一个由Rails应用程序使用的Javascript应用程序。该应用程序是完全独立的,并已构建到软件包中包含的/dist
目录中。出于超出此问题范围的原因,Rails应用程序将此应用程序作为UMD模块使用,通过脚本标签加载并初始化它:
App({})
问题是该程序包具有大量依赖项。当Rails应用程序安装软件包时,它还会安装软件包的所有依赖项,尽管它不需要或不使用任何依赖项,因为它所需的一切都存在于App捆绑包中。
Rails应用程序可以通过任何方式安装软件包(并在/dist
目录中访问该应用程序)而无需安装所有软件包的依赖项吗?
请注意,我们不希望将所有依赖项都移至应用程序的devDependencies
,因为这会造成混淆(并且可能最终会以多种方式分发应用程序,包括通过es6 import)。另外请注意,我们使用Yarn作为包管理器。
为了明确起见,我们使用NPM作为与Rails应用程序共享版本发布的一种方式,但是Rails应用程序关心的包中唯一的东西就是UMD模块。 Rails应用程序能够执行yarn add Example@latest
并立即拉入我们应用程序的最新版本非常有用,但是它不需要解析软件包或其依赖项,因为它们已经被烘焙到UMD中了模块。