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每次重新生成文件。