无法将公共服务与私人服务分开

时间:2018-10-22 12:01:04

标签: node.js laravel npm yarnpkg

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

--modules-folder public/components

在我决定将node-sass引入到我的后端程序包项目中之前,一切都很好。

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

有没有办法拆分这些程序包管理器?还是我完全以错误的方式来做这件事。

1 个答案:

答案 0 :(得分:1)

正如我在评论中提到的那样,这是一种非常奇怪的设置方式。通常,您可以这样做:

  1. 使用单个软件包管理器(NPM或Yarn),因为混合它们通常效果不佳。 NPM使用package-lock.json,yarn使用yarn.lock来确定要下载的软件包版本,因此最终可能导致依赖项不匹配。
  2. 使用webpack创建一个软件包捆绑包,因为您正在使用Laravel,所以应该使用Laravel Mix
  3. 如有必要,您可以extract vendor packages创建捆绑包,使其更有可能访问浏览器缓存。
  4. 您也可以将SCSS用于样式表

Laravel Mix将确保捆绑包中实际上仅包含最低限度的文件,此外,可以缩小源文件,还可以设置目标浏览器版本,以将较新的ES 6语法转换为兼容的JavaScript。

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

  1. 您需要将它们作为模块加载,但是IE完全不允许这样做。
  2. 您最终将把这些模块的所有依赖关系和dev依赖关系放入不必要的公用文件夹中。

总的来说,我认为最好是编译资产。