javascript - UglifyJS 无法在 Symfony2 生产环境中工作

标签 javascript php node.js symfony uglifyjs

我相信我配置正确——这是我的 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/下创建它们。

为什么当它在 js/(js/a07da66_jquery.min_1.js) 下创建新文件时,它在 app_dev.php 中工作正常,但在生产环境中却不能工作?

最佳答案

您必须运行 app/console --env=prod assetic:dump 才能生成 prod 环境的 Assets 。

经验法则:

  • 开发模式下,保持app/console assetic:watch --force在后台运行(至少在处理JS/CSS文件时)。每当文件发生更改时,它都会重新生成dev Assets 。
  • 部署/构建时,运行 app/console --env=prod assetic:dump 一次,以便生成prod的组合 Assets 。

生产模式的想法是生成当前开发的某种构建或快照。因此,您仅在创建构建时才使用 app/console --env=prod assetic:dump

当然,您可以将您的 dev 环境切换到 prod 进行简短测试,但随后您也必须执行构建过程(其中包括生成 prod>产品 Assets )。

关于javascript - UglifyJS 无法在 Symfony2 生产环境中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32831403/

相关文章:

javascript - 当一个div向下移动时,调整其余部分以占用剩余空间

javascript - 自定义 Google Charts 以在图表中显示文本/数字

php - mysql 将多条数据插入单列或多行

javascript - ajax php javascript 集成不起作用

node.js - 将环境变量传递给特定于部署的 travis

javascript - 将文件推送到文件类型的输入中

php - 我可以使用 Laravel 的 `call` 方法在单元测试中发送原始 JSON 数据吗?

javascript - Node.js 和 Mysql 的 Promise

node.js - 如何在内容类型为='application/x-protobuf'的node.js中发布数据

php - tinymce - 浏览图像按钮在插入/编辑弹出窗口中不可见