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

如何在Gruntfile.js的uglify配置中更新ES6 import语句?

解决Grunt压缩JS时修改ES6 Import路径的问题

你当前的grunt-contrib-uglify配置可正常生成带.min.js后缀的压缩文件,但无法修改文件内的ES6 import语句路径。要实现自动将import中的.js替换为.min.js,可借助grunt-string-replace插件完成文本替换操作,步骤如下:

1. 安装grunt-string-replace插件

在项目根目录执行命令:

npm install grunt-string-replace --save-dev

2. 修改Gruntfile.js配置

更新后的完整配置如下:

module.exports = function(grunt) {
  grunt.initConfig({
    uglify: {
      'minify-each': { 
        options: {
          beautify: false, 
          mangle: false,  
          sourceMap: true,
          compress: {
            drop_console: true 
          }
        },
        files: [{
          cwd: 'src/private/assets/js/',
          src: '**/*.js',
          dest: 'src/public/assets/js/',
          expand: true,
          flatten: false,
          ext: '.min.js'
        }]
      }
    },
    // 新增字符串替换任务
    'string-replace': {
      'fix-import-paths': {
        files: [{
          cwd: 'src/public/assets/js/',
          src: '**/*.min.js',
          dest: 'src/public/assets/js/',
          expand: true,
          flatten: false
        }],
        options: {
          replacements: [{
            // 匹配import语句中的.js后缀路径
            pattern: /from\s+['"](.*?)\.js['"]/g,
            // 替换为带.min.js的路径
            replacement: 'from \'$1.min.js\''
          }]
        }
      }
    }
  });

  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.loadNpmTasks('grunt-string-replace');
  // 修改run任务,先执行压缩再替换路径
  grunt.registerTask('run', ['uglify', 'string-replace:fix-import-paths']);
};

3. 配置说明

  • string-replace任务会遍历src/public/assets/js/下所有.min.js文件
  • 正则表达式/from\s+['"](.*?)\.js['"]/g会匹配所有ES6 import语句中的.js结尾路径
  • 替换逻辑会将匹配到的xxx.js替换为xxx.min.js,同时保留原路径结构

4. 效果验证

执行grunt run后,压缩后的file1.min.js中的import语句会被修改为:

import { getConstants, getUtils } from '../assets/js/utils.min.js';
import { WidgetClass } from '../assets/js/classes.min.js';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 17:32:42