UglifyJS不能在Symfony2生产环境中工作
我相信我configuration正确 – 这是我的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未find错误。 它试图访问它在js/a07da66.js
– 似乎在js /默认情况下创build它们。
为什么它在app_dev.php中工作的很好,当它在js /(js / a07da66_jquery.min_1.js)下创build新文件时,却不在生产中?
您必须运行app/console --env=prod assetic:dump
来生成prod环境的资产。
经验法则:
- 在开发模式下,保持
app/console assetic:watch --force
运行在后台(至less在处理JS / CSS文件时)。 只要文件发生变化,它就会重新生成开发资源。 - 在部署/构build时,运行
app/console --env=prod assetic:dump
一次,以便生成prod的组合资产。
产品模式的想法是,您产生某种forms的当前发展的构build或快照。 因此,只有在创build构build时,才会使用app/console --env=prod assetic:dump
。
当然,您可以切换您的开发环境来进行简短的testing,但是您也必须执行构build过程(其中包括生成产品资产)。
在Symfony 3 +中,您必须运行bin/console assetic:dump --env=prod
来生成prod环境的文件。
如果您对资产进行了修改,则必须运行bin/console assetic:watch
每次重新生成文件。