【问题标题】:Grunt uglify. How to minify and replace original file with result?咕噜丑化。如何用结果缩小和替换原始文件?
【发布时间】:2015-09-13 20:56:09
【问题描述】:

我们将 grunt 用于开发和生产。对于 dev 我们不执行 uglify 但对于 prod 我们执行。不幸的是,我无法将脚本的引用从“script.js”更改为“script.min.js”。

我已经为 prod 环境尝试过这样的 grunt 任务,但它不起作用:

// uglify
uglify: {
    options: {
        drop_console: true
    },
    componet: {
        src:  [componet.path + 'script.js'],
        dest: componet.path + 'script.js'
    },
}

用丑陋的版本更改内容“script.js”的最佳工作流程是什么?

【问题讨论】:

  • 在 grunt-contrib-uglify v0.9.2 中工作 - 刚刚使用您的配置进行了验证。您应该验证componet.path + 'script.js' 生成了正确文件的有效路径,并且源文件存在于构建周期的适当位置。

标签: gruntjs grunt-contrib-uglify


【解决方案1】:

试试这个:

uglify: {
    options: {

    },
    main: {
        files: [{
            expand: true,
            src: ['yourpath/**/*.js'],
            dest: ''
        }]
    }
}

【讨论】:

    【解决方案2】:

    定义 grunt 任务有不同的可能性,这里有一些例子:

    uglify: {
      options: {
        drop_console: true
      },
      componet: {
        files: [
          // map one to one
          { 'path/to/minimized01.min.js': 'path/to/source01.js' },
          { 'path/to/minimized02.min.js': 'path/to/source02.js' },
          // concat several sources into a minimized destination
          { 'path/to/minimized03and04.min.js': [ 'path/to/source03.js', 'path/to/source04.js' ]},
          // map all files in a folder, one to one into a destination
          { expand: true,
            cwd:  'path/to/a/source/folder',
            src:  [ '**/*.js', '!excludeThisFile.js' ],
            dest: 'path/to/a/destination/folder',
            ext:  'min.js' // if you want to change each extension to min.js
          }
        ]
      }
    }
    

    然后你可以以grunt uglify:component 运行它...我总是为开发和生产设置单独的任务,对于开发我建议使用 uglify,不删除控制台,并使用beautify 选项...更好如果您使用源映射,它对于在浏览器中进行调试非常有用。

    【讨论】:

    • 看起来像是标准 uglify 的工作流程。是否可以完全禁用开发环境的 uglify?
    • 您可以定义将运行其他任务的任务:grunt.registerTask('production', ['clean', 'copy', 'compass:production', 'uglify']); grunt.registerTask('development', ['clean', 'copy', 'watch']);,然后调用grunt developmentgrunt production...
    • 例如,如果你做grunt.registerTask('dev', ['copy']);grunt.registerTask('prod', ['uglify']);你可以通过grunt dev将源复制到dest文件夹,并通过grunt prod进行uglify
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多