如何在Laravel包开发中使用混合



我正在创建一个供公司内部使用的自定义laravel包,并试图弄清楚如何使用该包所需的资产。

我有src/resources/js,其中我有多个JSCSS文件。我想在开发包时运行npm run watch,这样我就可以看到更改。补丁/更新完成后,我想运行npm run production,它会将这些文件保存在src/dist中,用户可以在serviceProvider:中使用此命令将这些文件发布到他们的公共目录(如果需要(

protected function registerAssets() {
$this->publishes([
__DIR__ . '/dist/' => public_path('/public/vendor/myPackage'),
], 'public');
}

现在我的问题是,我如何构建我的webpackblade视图以使用我的逻辑,这样在运行npm run watch时,刀片中的mix()函数将从一个目录加载资产,如果我发布包,它将从另一个目录中加载资产?

我是否正确理解使用资产进行包开发的逻辑?

执行npm run watch时,视图将从同一路径获取它们,但它只会更改它们的哈希,因此可以删除缓存。我认为,在您为生产/dist使用准备好它们之后,就不需要再使用mix()了,因为您的包或使用该包的项目不会重新编译它们。例如,当你将bootstrap.js添加到你的项目中时,你只需要在需要的时候加载资产,而不编译它

当您发布或发布您的包时,我认为您的视图应该使用dist文件夹资产,而在开发它时,您应该使用mix。如果使用包的项目在自己的视图中需要一些资产,它应该为dist发布的目录找到路径。您还可以使您的包可配置,以用于发布资产的位置以及加载视图的位置。另一种选择是制作mix()函数的包装器,并根据具体配置加载资产。我希望这能给你一些关于如何进行的想法,这取决于其他人将如何使用该包。

最新更新