如何在一个文件夹中合并多个.js文件并将其输出到另一个文件夹?

时间:2019-03-26 19:37:26

标签: node.js gruntjs grunt-contrib-uglify

我是新来的,在使用插件grunt-contrib-uglify-es时我不知道如何定义路径。

这是我的文件夹结构:

.
├── controllers
├── models
├── public
│   ├── build
│   │   ├─ foo.min.js
│   │   └─ x.min.js
│   ├── css
│   ├── font
│   └── js
│        ├─ foo.js
│        └─ x.js
├── routes
├── tests
├── utils
└── views

这是我的艰苦任务:

// take all js file in public/js/ and put them in public/build/
uglify: {
  options: {
    mangle: false,
          banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
  },
  build: {
    files: [{
      expand: true,
      src: 'public/js/*.js',
      dest: 'public/build/',
      rename: function (dst, src) {
        console.log(dst);
        console.log(src);
        return src;
      }
    }]
  }
}

当我运行grunt时,它将创建文件到public/js中并覆盖现有文件。我不明白为什么。

我也尝试过这个:

expand: true,
src: 'js/*.js',
dest: 'build/',
cwd: 'public/',

现在,它在根目录下创建一个新文件夹js,其中包含所有文件。

我想压缩.js中的每个public/js/文件,然后将其放入public/build/

我显然迷路了,你能帮我吗?

1 个答案:

答案 0 :(得分:0)

为了满足您的要求,在building the files object dynamically时您需要利用;

  1. { "name": "myApp", "version": "1.0.0", "sideEffects": false, "scripts": { "ng": "ng", "test": "ng test", ... }, } 选项-如下所述:

      
        
    • cwd所有cwd匹配项都相对于(但不包括)此路径。
    •   
  2. src函数,描述为:

      

    rename嵌入自定义函数,该函数返回包含新目的地和文件名的字符串。每个匹配的rename文件都会调用此函数(扩展名重命名和拼合后)。

Gruntfile:

以下配置将满足您的期望结果。

src