You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Yeoman生成的AngularJS项目中用Grunt打包自定义assets目录资源

自定义Gruntfile.js整合assets目录资源到AngularJS构建流程

没问题,我来一步步教你修改Gruntfile.js,把assets/目录下的CSS、JS和图片都纳入Yeoman的构建流程里。Yeoman生成的AngularJS项目Grunt配置是模块化的,我们主要需要调整几个核心任务:

1. 配置copy任务:复制静态资源到dist目录

Grunt的copy任务负责把未被压缩合并的静态资源(比如字体、特定格式图片)复制到最终的dist目录。找到Gruntfile里的copy配置块,修改dist子任务的src数组,加入assets目录的相关路径:

copy: {
  dist: {
    files: [{
      expand: true,
      dot: true,
      cwd: '<%= yeoman.app %>',
      dest: '<%= yeoman.dist %>',
      src: [
        '*.{ico,png,txt}',
        '*.html',
        'views/{,*/}*.html',
        // 加入assets下的图片和字体
        'assets/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}',
        'assets/fonts/{,*/}*.*'
      ]
    }, {
      expand: true,
      cwd: '.tmp/images',
      dest: '<%= yeoman.dist %>/assets/images',
      src: ['generated/*']
    }]
  },
  // 保留其他copy子任务(如styles、fonts)的原有配置
}

2. 调整useminPrepare和usemin任务:处理资源合并压缩

usemin是Yeoman构建的核心,它会识别HTML里的注释标记,自动合并压缩资源。

第一步:在HTML中添加usemin标记

先在你的HTML文件(比如index.html)里,给assets下的CSS和JS加上对应的注释块,告诉Grunt要合并这些文件:

<!-- build:css assets/css/main.css -->
<link rel="stylesheet" href="assets/css/style1.css">
<link rel="stylesheet" href="assets/css/style2.css">
<!-- endbuild -->

<!-- build:js assets/js/main.js -->
<script src="assets/js/script1.js"></script>
<script src="assets/js/script2.js"></script>
<!-- endbuild -->

第二步:修改Gruntfile的usemin配置

找到usemin任务配置,确保它能正确识别dist目录下的assets资源路径:

usemin: {
  html: ['<%= yeoman.dist %>/{,*/}*.html', '<%= yeoman.dist %>/views/{,*/}*.html'],
  css: ['<%= yeoman.dist %>/assets/css/{,*/}*.css'], // 指向dist下的assets/css文件
  options: {
    assetsDirs: ['<%= yeoman.dist %>', '<%= yeoman.dist %>/assets/images'] // 让usemin能定位图片资源
  }
}

useminPrepare任务一般不需要额外修改,只要HTML里的路径正确,它会自动扫描到assets下的资源并生成临时任务。

3. 配置cssmin任务:压缩assets下的CSS

找到cssmin的dist子任务,把assets下的CSS文件加入压缩源:

cssmin: {
  dist: {
    files: {
      '<%= yeoman.dist %>/assets/css/main.css': [
        '.tmp/styles/{,*/}*.css',
        '<%= yeoman.app %>/assets/css/{,*/}*.css' // 加入assets/css的文件
      ]
    }
  }
}

4. 配置uglify任务:压缩assets下的JS

修改uglify的dist子任务,指定要压缩的assets/js文件:

uglify: {
  dist: {
    files: {
      '<%= yeoman.dist %>/assets/js/main.js': [
        '<%= yeoman.app %>/assets/js/{,*/}*.js' // 指向assets/js的所有JS文件
      ]
    }
  }
}

5. 配置imagemin任务:压缩assets下的图片

调整imagemin的dist子任务,把源目录改成assets/images,输出到dist对应的目录:

imagemin: {
  dist: {
    files: [{
      expand: true,
      cwd: '<%= yeoman.app %>/assets/images', // 源图片目录
      src: '{,*/}*.{png,jpg,jpeg,gif}',
      dest: '<%= yeoman.dist %>/assets/images' // 压缩后输出目录
    }]
  }
}

最后测试

修改完所有配置后,运行grunt build命令,就能看到dist/assets目录下已经包含了处理好的CSS、JS和压缩后的图片了。

内容的提问来源于stack exchange,提问作者Jesse Barnum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:23:34