laravel 在 node_modules 中混合来自包的编译资产?

laravel mix compile assets from a package in node_modules?

我开始在我的新 Laravel 5.7 项目上使用 laravel-mix 将所有 js/css 编译成一个文件,该文件将出现在我的 public js/css 目录(每页一个)像这样:

mix.js('resources/js/app.js', 'public/js')
   .sass('resources/sass/app.scss', 'public/css')
   .js('resources/js/create.member.js', 'public/js/backend/members')
   .sass('resources/sass/create.member.scss', 'public/css/backend/members')
   .sourceMaps();

像这样我想保持视图整洁并减少必须加载的资产数量。

到目前为止一切正常,我了解如何使用 laravel-mix。现在我通过 npm 安装了一些包,特别是 cropperjs 和 summernote,到我的 node_modules 目录。

当我 import/require 他们的 scss/js 将要由 laravel-mix 编译并放置在 public 中的脚本时,它失败了,因为看起来这些脚本(cropper.js、summernote.scss 等...)在 node_modules 目录(字体、图像等...)中引用其原始包目录中的其他资产

对于 JS 我这样做:

require('../../node_modules/cropperjs/dist/cropper.js');
require('../../node_modules/summernote/dist/summernote.js');

对于 SCSS 我是这样的:

@import '~cropperjs/src/css/cropper';
@import '~summernote/src/less/summernote-bs4';

我的问题是:使用通过 npm 安装的软件包时有什么好的做法?

我是否必须将整个包目录放到我的 public 目录中? 我是否 link 到位于 node_modules 目录中的包目录中的资产? 或者他们是否还有机会通过 laravel-mix/webpack 将它们与我的其他资产一起编译,也许是我丢失的标志? 我是否必须使用任何其他软件(如 Bower)才能实现?

对于js我只用

import 'vue'
import 'cropperjs'

通常包文档会告诉你如何导入它。

你不应该在 webpack.mix 中编译节点资产...就像 barghouthi 说的,通常包文档会告诉你如何在你的 js 文件中导入包。