我正在做一个使用Symfony 6.0
的项目,并在项目中添加了WebPack Encore,遵循Symfony文档。
在webpack.config.js
中,我使用setOutputPath
和setPublicPath
设置自定义资产目录,而不是默认的public/build
文件夹:
Encore
// directory where compiled assets will be stored
.setOutputPath('public/assets/build/')
// public path used by the web server to access the output path
.setPublicPath('/assets/build')
// only needed for CDN's or sub-directory deploy
//.setManifestKeyPrefix('build/')
这很好。当运行npm run dev
时,文件现在在public/assets/build
而不是默认的public/build
文件夹中创建。
但是,以这种方式更新配置后,分支方法{{ encore_entry_link_tags('app') }}
和{{ encore_entry_script_tags('app') }}
不再生成输出。生成的HTML中不添加任何脚本和样式信息。
那么,如何正确设置Encore以使用默认public/build
以外的文件夹呢?
好吧,我自己找到了答案…:-)我将把它留在这里,以防其他人遇到同样的问题:
必须同时更新config/packages/webpack_encore.yaml
文件:
webpack_encore:
# The path where Encore is building the assets - i.e. Encore.setOutputPath()
output_path: '%kernel.project_dir%/public/assets/build'
framework:
assets:
json_manifest_path: '%kernel.project_dir%/public/assets/build/manifest.json'
虽然我真的不明白为什么有必要在三个不同的位置设置相同的配置,但这是可行的方法。