我的目录结构如下 应用
|--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"
},
}
现在,当我使用grunt文件编译文件时,它正在成功编译,但build文件夹中的main_base.js的大小为0。 实际上我的概念是这样的,无论我在我的仓库中添加的js文件,我在js.txt中按顺序维护它,而不是在concat任务中将它们保存在GruntFile.js中。类似的事我想做的就是我所有的文件。 但它没有得到过程。任何想法,我失踪的地方?感谢。
答案 0 :(得分:0)
根据你的结构我猜:
grunt.file.read('apps/js.txt'),
应该是:
grunt.file.read('js/js.txt'),
而不是:
[ '<%= jsFiles %>' ],
你可能应该:
<%= jsFiles.toString().split("\n") %>,
从文件中创建一个数组(将缓冲区转换为字符串,根据换行符转换为数组)
也许你可以在你的grunt文件中包含jsFiles数组,或者将它作为json文件来简化解析。
我建议您查看webpack,这是我目前用于构建我的应用程序的内容,并且需要直接从您的javascript源文件中获取所需的模块。