2016-03-11 3 views
0

У меня есть структура каталогов, как показано ниже приложенийGrunt - не в состоянии прочитать внешний текстовый файл в GruntFile.js

|--GruntFile.js 
|--package.json 
|--js 
    |--js.txt 
    |--global 
     |--backbone.js 
     |--jquery.js 
     |--lodash.js 
     |--base.js 
|--css 
    |--a.css 
    |--b.css 
    |--c.css 

И есть gruntFile.js, как показано ниже:

module.exports = function(grunt){ 
    require("matchdep").filterDev("grunt-*").forEach(grunt.loadNpmTasks); 
    grunt.initConfig({ 
    pkg: grunt.file.readJSON('package.json'), 
    jsFiles: grunt.file.read('apps/js.txt'), 

    concat: { 
     options: { 
     separator: ';' 
     }, 
     dist: { 
     src: [ '<%= jsFiles %>' ], 
     dest: 'build/js/main_base.js' 
     } 
    }, 
}); 

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

Моего js.txt файл содержит список файлов js, которые необходимо обрабатывать последовательно. js.txt:

'assets/js/global/lodash.js', 
'assets/js/global/underscore.js', 
'assets/js/global/backbone.js', 
'assets/js/base.js 

И мой package.json ниже:

{ 
    "name": "abc", 
    "version": "1.0.0", 
    "author": "Allen", 
    "private": true, 
    "devDependencies": { 
    "grunt": "^0.4.5", 
    "grunt-contrib-concat": "^1.0.0", 
    "grunt-contrib-cssmin": "^1.0.0", 
    "grunt-contrib-handlebars": "^1.0.0", 
    "grunt-contrib-less": "^1.2.0", 
    "grunt-contrib-uglify": "^1.0.0", 
    "grunt-contrib-watch": "^0.6.1", 
    "grunt-cssc": "^0.2.6", 
    "grunt-htmlhint": "^0.9.12-fix", 
    "matchdep": "^1.0.1" 
    }, 
} 

Теперь, когда я компиляции файлов с помощью файла пехотинца, он получает успешно скомпилируется, но main_base.js в build имеет размер 0. На самом деле моя концепция выглядит так: независимо от файлов js, которые я добавляю в своем репо, я поддерживаю его последовательно в js.txt, а не поддерживаю их в GruntFile.js в командной задаче. Подобная вещь, которую я хочу сделать, будет иметь все мои меньшие файлы. Но это не процесс. Любая идея, где я отсутствую? Благодарю.

ответ

0

Согласно вашей структуре я думаю:

grunt.file.read('apps/js.txt'), 

должно быть:

grunt.file.read('js/js.txt'), 

и вместо:

[ '<%= jsFiles %>' ], 

вы, вероятно, следует:

<%= jsFiles.toString().split("\n") %>, 

создать массив из файлов (преобразование буфера в строку, преобразовать в массив на основе переносов)

может быть, вы могли бы включать в себя массив jsFiles в файле хрюкать, или иметь его в качестве файла JSON, чтобы упростить синтаксические ,

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

Смежные вопросы