laravel混合从node_modules中的包编译资产​​吗?

时间:2018-11-02 17:51:38

标签: laravel webpack assets npm-install laravel-mix

我开始在新的Laravel 5.7项目上使用laravel-mix将所有js / css编译为一个文件,该文件将出现在我的公共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目录中。

当我将它们的scss / js导入/需要将要由laravel-mix编译并公开发布的脚本时,它失败了,因为似乎这些脚本(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安装的软件包时有什么好的做法?

我是否必须将整个软件包目录放入我的公共目录? 我是否链接到位于node_modules目录中的package目录中的资产? 还是他们没有机会通过laravel-mix / webpack将它们与我的其他资产一起编译,也许是我所缺少的标志? 我是否需要使用诸如bower之类的其他软件才能使事情发生?

非常感谢您打开我的视野!

2 个答案:

答案 0 :(得分:1)

对于js,我只使用

import 'vue'
import 'cropperjs'

通常,包装文档会告诉您如何导入。

答案 1 :(得分:0)

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