【问题标题】:How to skip source parent directory using grunt uglify如何使用 grunt uglify 跳过源父目录
【发布时间】:2018-02-24 00:32:27
【问题描述】:

src 目录:

dir1
|-- 1.js
|-- 2.js
`-- sub-dir1
    `-- 1.js

目标目录:

min
`-- dir1
    |-- 1.min.js
    |-- 2.min.js
    `-- sub-dir1
        `-- 1.min.js

我的代码 sn-p:

uglify: {
    t2: {
        options: {                    
            banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +
                    '<%= grunt.template.today("yyyy-mm-dd") %> */'
        },
        files: [{                    
            expand: true,
            src: ['dir1/**/*.js'],
            dest: 'min',
            rename: function (dst, src) {                        
                return dst + '/' + src.replace('.js', '.min.js');                        
            }
        }]
    }
}

但我想跳过目标目录下的源目录,所需的结构是:

min
|-- 1.min.js
|-- 2.min.js
`-- sub-dir1
    `-- 1.min.js

【问题讨论】:

    标签: gruntjs grunt-contrib-uglify


    【解决方案1】:

    有几种方法可以实现这一目标。 解决方案 A(如下)是最简单且最常用的。


    解决方案 A

    动态构建文件对象时,您可以使用cwd 属性。文档中对cwd 属性的描述如下:

    cwd 所有src 匹配都与此路径相关(但不包括)。

    将您的 files 属性更改为以下内容:

    // ...
    files: [{
      expand: true,
      cwd: 'dir1/',    // <-- Add this.
      src: '**/*.js',  // <-- Change your src glob to this.
      dest: 'min',
      rename: function (dst, src) {
        return dst + '/' + src.replace('.js', '.min.js');
      }
    }]
    // ...
    

    解决方案 B

    另一种方法(不使用cwd 属性)是将rename 方法更改为以下内容:

    // ...
    rename: function (dst, src) {
        src = src.split('/');
        src.shift();
        src = src.join('/');
        return dst + '/' + src.replace('.js', '.min.js');
    }
    // ...
    
    • src = src.split('/'); 部分使用带有/ 分隔符的String split() 方法将src 路径拆分为单个路径项的数组。

    • src.shift(); 部分利用数组shift() 方法从数组中删除第一个元素(例如dir1)。

    • src = src.join('/') 部分使用带有/ 分隔符的数组join() 方法以字符串形式形成新路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-23
      • 2014-04-29
      相关资源
      最近更新 更多