toar86/laravel-encore

在Laravel中集成Webpack Encore。

dev-main 2023-09-20 13:12 UTC

This package is not auto-updated.

Last update: 2024-09-19 16:18:29 UTC


README

Laravel Encore

Packagist上的最新版本   总下载量   构建

此包帮助将Webpack Encore与Laravel集成。

此包最初由@innocenzi编写。由于他们表示不再维护它,我决定将其分叉并继续为其提供支持。

安装

您可以通过composer安装此包

composer require toar86/laravel-encore

安装Encore

手动

删除 laravel-mix 并添加 @symfony/webpack-encore

npm remove laravel-mix
npm install @symfony/webpack-encore --dev

删除您的 webpack.mix.js 并创建一个 webpack.config.js。以下是一个示例

const Encore = require('@symfony/webpack-encore');

if (!Encore.isRuntimeEnvironmentConfigured()) {
  Encore.configureRuntimeEnvironment(process.env.NODE_ENV || 'dev');
}

Encore
  .setOutputPath('public/build/')
  .setPublicPath('/build')
  .addEntry('app', './resources/js/app.js')
  .splitEntryChunks()
  .enableSingleRuntimeChunk()
  .enablePostCssLoader()
  .cleanupOutputBeforeBuild()
  .enableSourceMaps(!Encore.isProduction())
  .enableVersioning(Encore.isProduction());

module.exports = Encore.getWebpackConfig();

确保 resources/js/app.js 存在。理想情况下,它还应导入您的CSS,但如果不希望这样做,您可以将 addStyleEntry 添加到Encore配置中。

// resources/js/app.js
import '../css/app.css';

确保您将 public/build/(或您设置的任何输出路径)添加到您的 .gitignore

最后但同样重要的是,您应该在 package.json 中替换脚本,如下所示

// package.json
{
  "scripts": {
    "dev-server": "encore dev-server",
    "dev": "encore dev",
    "watch": "encore dev --watch",
    "build": "encore production --progress"
  }
}

使用方法

在您的blade组件中,使用 @encoreStyles@encoreScripts 指令来包含Encore生成的资源。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Laravel</title>
    <!-- Include assets -->
    @encoreStyles
    @encoreScripts
  </head>
  <body>
    Hello.
  </body>
</html>

默认情况下,它将查找 app 条目,但您可以通过在每个指令中传递条目名称来更改它们。

@encoreStyles('app')
@encoreScripts('admin')

如果您使用了 静态资源,您可以使用 Encore::asset('build/path/to/your/asset.png') 来包含它。在底层,它只是对 manifest.json 的映射。

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件