wavevision / nette-webpack
此包已被废弃且不再维护。未建议替代包。
Nette 框架的 Webpack 适配器。
2.0.0
2021-10-19 09:11 UTC
Requires
- php: >=7.4
- latte/latte: ^2.6
- nette/di: ^3.0
- nette/http: ^3.0
- tracy/tracy: ^2.7
- wavevision/props-control: ^6.0
- wavevision/utils: ^2.4
Requires (Dev)
- nette/application: ^3.0
- php-coveralls/php-coveralls: ^2.2
- phpstan/extension-installer: ^1.0
- phpstan/phpstan-nette: ^0.12.3
- wavevision/coding-standard: ^6.0
- wavevision/di-service-annotation: ^4.0
- wavevision/nette-tests: ^3.1
- dev-master
- 2.0.0
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- 0.7.1
- 0.7.0
- 0.6.3
- 0.6.2
- 0.6.1
- 0.6.0
- 0.5.0
- 0.4.0
- 0.3.0
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.7
- 0.1.6
- 0.1.5
- 0.1.4
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1.0
- dev-dependabot/npm_and_yarn/json5-1.0.2
- dev-dependabot/npm_and_yarn/qs-6.5.3
- dev-dependabot/npm_and_yarn/decode-uri-component-0.2.2
- dev-dependabot/npm_and_yarn/terser-5.14.2
- dev-dependabot/npm_and_yarn/shell-quote-1.7.3
- dev-dependabot/composer/guzzlehttp/guzzle-7.4.5
- dev-dependabot/composer/guzzlehttp/guzzle-7.4.4
- dev-dependabot/composer/guzzlehttp/psr7-2.2.1
- dev-dependabot/npm_and_yarn/minimist-1.2.6
- dev-dependabot/npm_and_yarn/nanoid-3.2.0
- dev-dependabot/composer/latte/latte-2.10.8
- dev-development
This package is auto-updated.
Last update: 2024-08-07 18:33:12 UTC
README
Nette Webpack
Nette 框架的 Webpack 适配器,包括以下内容
- DI 扩展
- 入口块解析器 (使用 webpack
manifest.json
) - UI 组件以渲染
<script>
和<link>
标签的资产 - webpack 配置助手,用于与
neon
文件一致地管理设置
安装
通过 Composer 安装 DI 扩展。
composer require wavevision/nette-webpack
Webpack 助手可以通过 Yarn
yarn add --dev @wavevision/nette-webpack
或 npm
npm install --save-dev @wavevision/nette-webpack
使用方法
DI 扩展
在您的应用配置中注册 DI 扩展。
extensions: webpack: Wavevision\NetteWebpack\DI\Extension(%debugMode%, %consoleMode%)
您可以如下配置扩展 (默认值)。
webpack: debugger: %debugMode% devServer: enabled: %debugMode% url: https://:9006 dir: %wwwDir%/dist dist: dist entries: [] manifest: manifest.json
debugger: boolean
– 启用 Tracy 面板并提供有用的开发信息devServer.enabled: boolean
– 从webpack-dev-server
提供资产devServer.url: string
–webpack-dev-server
公共 URLdir: string
– webpack 构建目录的绝对路径dist: string
– webpack 构建目录名称entries: Record<string, boolean>
– 在解析资产时应考虑的 webpack 入口点manifest: string
– webpack 清单名称
然后,设置入口块。
use Nette\Application\UI\Presenter; use Wavevision\NetteWebpack\InjectResolveEntryChunks; use Wavevision\NetteWebpack\UI\Components\Assets\AssetsComponent; final class AppPresenter extends Presenter { use AssetsComponent; use InjectResolveEntryChunks; public function actionDefault(): void { $this ->getAssetsComponent() ->setChunks($this->resolveEntryChunks->process('entry')); } }
注意:入口块是基于 webpack
manifest.json
解析的。您也可以使用setScripts
和setStyles
方法手动设置块或分别设置。
最后,在您的布局中渲染 assets
。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width"> <title>Wavevision Nette Webpack</title> {control assets:styles} </head> <body> {include content} {control assets:scripts} </body> </html>
如果您需要,您可以注入并使用以下服务来进一步自定义您的设置
NetteWebpack
– 提供与扩展一起工作的基本方法FormatAssetName
– 根据提供的名称格式化和解析资产 URLFormatChunkName
– 格式化特定内容类型的块名称,并解析其 URL
Webpack 助手
这个简单的实用工具将帮助您一致地管理项目设置和 webpack 配置。它还将为您提供预配置的 webpack-manifest-plugin,以生成包含额外 chunks
属性的 manifest.json
,该属性用于在应用程序中动态解析入口块。
import { WebpackHelper } from '@wavevision/nette-webpack';
助手构造函数接受以下参数
neonPath?: string
– 配置webpack
的neon
的路径(如果没有提供,则使用默认值)wwwDir: string
– 必须提供的应用wwwDir
路径manifestOptions?: WebpackManifestPlugin.Options
– 如果您需要自定义清单插件设置,您可以在这里进行操作
返回的类公开以下方法
createManifestPlugin(): WebpackManifestPlugin
– 创建清单插件实例getDevServerPublicPath(): string
– 返回包含dist
的路径中解析出的webpack-dev-server
URLgetDevServerUrl(): UrlWithParsedQuery
– 返回webpack-dev-server
解析后的 URL 对象getDist(): string
– 返回dist
参数getEntries(): Record<string, boolean>
– 返回配置的 webpack 入口记录getEnabledEntries(): string[]
– 返回配置为true
的 webpack 入口列表getManifest(): string
– 返回 webpack 清单文件名getOutputPath(): string
– 返回指向 webpack 输出目录的解析路径parseNeonConfig<T extends NeonConfig>(): T
– 返回解析的neon
配置(如果neonPath
未定义,则抛出错误)
注意: 如果你想解析和使用更多的
neon
文件,也可以导入Neon
辅助工具。
查看示例 webpack 配置,以了解其全部功能。
致谢
向 Jiří Pudil 表示敬意,他的 WebpackNetteAdapter 我们在项目中使用,并为这个库提供了灵感。