Как прочитать список внешних файлов с помощью grunt - PullRequest
0 голосов
/ 12 января 2019

Я пытаюсь объединить файлы, а затем добавить их в Babelify и Uglify с помощью Grunt.

Я бы хотел прочитать список внешних файлов, из файла, в котором файлы записаны по одному для каждой строки, разделенные новой строкой.

Я пытаюсь использовать следующий файл GruntFile.js, но Грант говорит (после того, как я добавил строку src=['<%= jsFiles.toString().split("\n") %>']):

Running "browserify:dist1" (browserify) task
Warning: An error occurred while processing a template (Invalid or unexpected token). Use --force to continue.

Где ошибка?

Это GruntFile.js

module.exports = function(grunt) {
  grunt.initConfig({
    jsFiles: grunt.file.read('scripts/s.list'),
    env: {
        prod: {
            NODE_ENV: 'production'
        }
    },
    browserify: {
      dist1: {
        options: {
           transform: [
             ['babelify', {presets: ['es2015']}]
           ]
        },
        src: ['<%= jsFiles.toString().split("\n") %>'],
        dest: '/WebContent/js/libs/s.bundle.js'
      },
    },
    uglify: {
        my_target1: {
          files: {
            '/WebContent/js/libs/s.bundleuglified.js': ['/WebContent/js/libs/s.bundle.js']
          }
        },
      }    
  });

  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.loadNpmTasks('grunt-contrib-watch');
  grunt.loadNpmTasks('grunt-browserify');
  grunt.loadNpmTasks('grunt-env');
  grunt.registerTask('default', ['release']);
  grunt.registerTask('release', ['env', 'browserify', 'uglify']);
};

Редактировать : Я добавил обратную косую черту к \ n, и ошибка исчезла, но задача babelify дает мне пустой файл ...

Edit2 : я смог прочитать список файлов, используя следующие две строки в начале GruntFile.js

  const jsFiles = grunt.file.read('scripts/s.list');
  const jsFilesArray = jsFiles.toString().split("\n");

, а затем

src: jsFilesArray.slice(0, jsFilesArray.length-1),

потому что последний элемент был '', и он выдал ошибку Внимание: должен предоставить шаблон ”, как предложил Бениамин Н.

Edit3 : Я обнаружил, что задача babelify считывает файлы в алфавитном порядке, поэтому мне пришлось сначала объединить их, как объяснено здесь , а затем babelify и uglify

1 Ответ

0 голосов
/ 12 января 2019

Вам не нужно использовать '<%= %>'. Файл читается синхронно в свойство jsFiles, и его можно использовать немедленно. Вы можете указать кодировку для grunt.file.read, чтобы получить строку: https://gruntjs.com/api/grunt.file#grunt.file.read

...