如何使用grunt读取外部文件列表

时间:2019-01-12 18:54:56

标签: javascript gruntjs

我正在尝试使用Grunt连接文件,然后对其进行babelify和uglify。

我想从一个文件中读取一个外部文件列表,在该文件中,每行写一个文件,换行符分隔。

我正在尝试使用以下GruntFile.js,但是Grunt说(在我添加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),

因为最后一个元素是'',并且正如Beniamin H建议的那样,它给出了错误Warning: must provide pattern”

Edit3 :我发现babelify任务正在按字母顺序读取文件,因此我必须按照here的说明,先将它们连接起来,然后再进行babelify和uglify

1 个答案:

答案 0 :(得分:1)

您不需要使用任何'<%= %>'。该文件被同步读取到jsFiles属性中,可以立即使用。您可能要为grunt.file.read指定编码以获取字符串:https://gruntjs.com/api/grunt.file#grunt.file.read