代码之家  ›  专栏  ›  技术社区  ›  cdarwin

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

  •  2
  • cdarwin  · 技术社区  · 7 年前

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

    我试图使用以下GrunFile.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任务给了我一个空文件。。。

    编辑2 :我能够使用grunfile.js开头的以下两行读取文件列表

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

    然后

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

    因为最后一个元素是“”,它给出了错误 Warning: must provide pattern” 正如贝尼亚明H建议的那样。

    编辑3 当前位置我发现babelify任务是按字母顺序读取文件,因此我必须首先读取它们,如前所述 here

    1 回复  |  直到 7 年前
        1
  •  1
  •   Beniamin H Sai Sudha    7 年前

    你不需要使用任何 '<%= %>' jsFiles 属性,可以立即使用。您可能需要为其指定编码 grunt.file.read 要获取字符串,请执行以下操作: https://gruntjs.com/api/grunt.file#grunt.file.read