我相信我正确配置了 - 这是我的config.yml:
assetic:
debug: "%kernel.debug%"
use_controller: false
node: "/usr/local/bin/node"
bundles: [ ]
#java: /usr/bin/java
filters:
uglifyjs2:
# the path to the uglifyjs executable
bin: "%kernel.root_dir%/Resources/node_modules/.bin/uglifyjs"
cssrewrite: ~
我将uglifyjs存储在本地项目中,只是为了便于分发。
我正在使用uglifyjs生成所有JS文件:
{% javascripts
'vendor/bower_components/jquery/dist/jquery.min.js'
'vendor/bower_components/bootstrap-sass/assets/javascripts/bootstrap.min.js'
'vendor/bower_components/angular-route/angular-route.min.js'
'vendor/bower_components/underscore/underscore-min.js'
'vendor/bower_components/angular-cookies/angular-cookies.min.js'
'js/test1.js'
'js/test2.js'
filter='?uglifyjs2' %}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
如果我以开发模式(/app_dev.php)加载页面,它工作正常,只是单独加载文件,但由uglifyjs缩小;但是如果我尝试在生产中加载它,它会将所有这些js文件组合成一个js文件(即a07da66.js)。我面临的问题是,在尝试加载该文件时(a07da66.js),它会收到404未找到的错误。它试图在js/a07da66.js
访问它 - 似乎默认情况下在js /下创建它们。
为什么它在app_dev.php中工作正常,当它在js /(js / a07da66_jquery.min_1.js)下创建新文件但不在生产中时?
答案 0 :(得分:2)
您必须运行app/console --env=prod assetic:dump
来为prod环境生成资产。
经验法则:
app/console assetic:watch --force
在后台运行(至少在处理JS / CSS文件时)。只要文件发生变化,它就会重新生成 dev 资产。app/console --env=prod assetic:dump
一次,以便生成 prod 的合并资产。 prod模式的想法是你生成当前开发的某种构建或快照。因此,仅在创建构建时才使用app/console --env=prod assetic:dump
。
当然,您可以将 dev 环境切换到 prod 进行简短测试,但是您也必须执行构建过程(包括生成 prod 资产)。
答案 1 :(得分:0)
在Symfony 3 +中,您必须运行bin/console assetic:dump --env=prod
来生成prod环境的文件。
如果您对资产进行了修改,则每次都必须运行bin/console assetic:watch
以重新生成文件。