将 NPM javascript 库添加到 Laravel 8

Posted

技术标签:

【中文标题】将 NPM javascript 库添加到 Laravel 8【英文标题】:Adding NPM javascript library to Laravel 8 【发布时间】:2021-06-02 18:31:35 【问题描述】:

我正在使用 mobiscroll javascript 组件库和我正在构建的新 Laravel 8 应用程序。我使用了试用脚本,只需将缩小后的 css / js 复制到我的 laravel 应用程序的 public/csspublic/js 目录,然后将脚本 / css 文件推送到布局的 stack 中。

我希望能够通过 npm 安装模块并引用模块来更“本机”地要求这些。在一个反应​​应用程序中,我对此没有任何问题——但它是如何在 laravel 中完成的?

我尝试将window.mobiscroll = require('@mobiscroll/javascript'); 添加到bootstrap.js 文件中,因为这似乎是axios_ 库的可用方式,但是当我尝试时我仍然收到Uncaught ReferenceError: mobiscroll is not defined 错误初始化一个组件。

我也尝试将其添加到 app.js 文件中,如下所示:

require('alpinejs');
require('@mobiscroll/javascript');

与以前相同的错误。我正在运行npm run watch,所以mix 进程正在发生并且每次尝试都会成功,所以我认为这不仅仅是缓存或编译的问题。

我在 SO 或 laravel 文档中没有看到任何似乎解决此问题的内容。

编辑:与dayjs 有同样的问题,通过npm i dayjs 添加,使用window.dayjs = require('dayjs'); 添加到bootstrap.js,通过混合编译,清除所有缓存,仍然出现错误dayjs is not defined

【问题讨论】:

您需要在概念上区分节点使用的库和打包的库,以便将它们用作前端的静态数据。似乎您需要这些库,以便您的项目认为它们仅适用于节点构建过程,而不适用于客户端。您需要查看如何打包第三方依赖项。 laravel.com/docs/5.5/mix#vanilla-js。你会调用mix 方法吗? 【参考方案1】:

首先,在你的 Laravel 根文件夹中安装 Mobiscroll。

npm install @mobiscroll/javascript-lite --save-dev

那你要在合适的地方引用 JS 和 CSS。

在资源/js/bootstrap.js 中。

try 
    window.mobiscroll = require('@mobiscroll/javascript-lite');

    require('bootstrap');
 catch (e) 

在资源/css/app.css中。

@import '~@mobiscroll/javascript-lite/dist/css/mobiscroll.css';

如果你的 webpack.mix.js 是这样的......

const mix = require('laravel-mix');

mix.js('resources/js/app.js', 'public/js')
    .postCss('resources/css/app.css', 'public/css', [
        //
    ]);

做一个npm run prod

确保在 Blade 模板/布局中引用生成的 CSS 文件。

<link type="text/css" rel="stylesheet" href=" mix('css/app.css') ">

同样,对于 JS。

<script src=" mix('js/app.js') " defer></script>

【讨论】:

感谢@karl-hill 的解释和信息!

以上是关于将 NPM javascript 库添加到 Laravel 8的主要内容,如果未能解决你的问题,请参考以下文章

31个很棒的JavaScript库

如何将文本作为 npm 脚本命令添加到文件中

如何将 TypeScript 定义文件添加到源代码管理?

如何将打字稿定义文件添加到 npm 包中?

NPM酷库:log4js JavaScript日志框架

从零开始封装React UI 组件库并发布到NPM