如何使用 grunt 读取外部文件列表
How to read an external file list with grunt
我正在尝试使用 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丑化
您不需要使用任何 '<%= %>'
。文件被同步读入jsFiles
属性,可以立即使用。您可能希望为 grunt.file.read
指定编码以获取字符串:https://gruntjs.com/api/grunt.file#grunt.file.read
我正在尝试使用 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丑化
您不需要使用任何 '<%= %>'
。文件被同步读入jsFiles
属性,可以立即使用。您可能希望为 grunt.file.read
指定编码以获取字符串:https://gruntjs.com/api/grunt.file#grunt.file.read