Как увеличить несколько файлов .js в папке и вывести их в другую папку? - PullRequest
1 голос
/ 26 марта 2019

Я новичок в хрюканье и не могу понять, как определять пути при использовании плагина 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 голосов
/ 27 марта 2019

Чтобы удовлетворить ваши требования, при динамическом построении файлового объекта необходимо использовать;

  1. Опция cwd - которая описывается следующим образом:

    • cwd Все совпадения src относятся (но не включают) к этому пути.
  2. Функция rename, которая описывается как:

    rename Встраивает настроенную функцию, которая возвращает строку, содержащую новое назначение и имя файла.Эта функция вызывается для каждого соответствующего src файла (после переименования и выравнивания расширений).

Gruntfile:

СледующееКонфигурация будет соответствовать желаемому результату.

module.exports = function (grunt) {

  grunt.loadNpmTasks('grunt-contrib-uglify-es');

  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    uglify: {
      options: {
        mangle: false,
        banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
      },
      build: {

        // Change your configuration to this...
        files: [{
          expand: true,
          cwd: 'public/js',
          src: '*.js',
          dest: 'public/build/',
          rename: function (dst, src) {
            return dst + '/' + src.replace('.js', '.min.js');
          }
        }]
      }
    }
  });

  grunt.registerTask('default', ['uglify']);
};
...