terpomoj/laravel-encore

在 Laravel 中集成 Webpack Encore。

v1.1.0 2022-04-24 15:07 UTC

This package is auto-updated.

Last update: 2024-09-24 20:51:52 UTC


README

Laravel Encore

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

此包有助于将 Webpack Encore 与 Laravel 集成。

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

安装

您可以通过 composer 安装此包

composer require terpomoj/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,但如果您不想这样做,您可以在您的 Encore 配置中添加 addStyleEntry

// 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)。有关更多信息,请参阅 许可文件