首页 文章

无法将公众与私人包裹分开

提问于
浏览
0

所以我一直在我的Laravel项目中使用Yarn包管理器来下载jQuery和bootstrap等公共javascript库 . 我的.yarnrc配置文件有一行来指定模块目录,以便所有包都可以使用 .

--modules-folder public/components

这完全没问题,直到我决定将node-sass引入我的项目,这是一个后端程序包 .

我的问题是node-sass包括它的所有依赖项最终都在我的public / components文件夹中 . 理想情况下,我只使用Yarn作为我的公共包,使用npm作为我的后端包(最终将在我的项目根目录中的node_modules中) . 但是它们都使用相同的package.json文件 .

有没有办法拆分这些包管理器?或者我完全以错误的方式解决这个问题 .

1 回答

  • 1

    正如我在评论中提到的,这是一种非常奇怪的设置方式 . 通常你会这样做:

    • 使用单个包管理器(NPM或纱线),因为混合它们通常不能很好地工作 . NPM使用 package-lock.json 并且yarn使用 yarn.lock 来确定要下载的软件包版本,以便最终导致依赖性不匹配 .

    • 使用webpack创建包捆绑包,因为您使用的是Laravel,您应该使用Laravel Mix

    • 如有必要,您可以extract vendor packages创建更有可能访问浏览器缓存的捆绑包 .

    • 您还可以将SCSS用于样式表

    Laravel Mix将确保捆绑包中实际只包含所需的最少文件,此外还可以缩小源,您还可以设置目标浏览器版本以将新的ES 6语法转换为兼容的JavaScript .

    不将模块直接放在公用文件夹中的主要原因是:

    • 您需要将它们作为模块加载,但IE根本不允许这样做 .

    • 您最终会将这些模块的所有依赖项和dev依赖项放在公共文件夹中 .

    总的来说,我认为编译资产是最佳做法 .

相关问题