尝试使用 grunt-contrib-uglify 时出错:"src files were empty"
Error when trying to use grunt-contrib-uglify: "src files were empty"
我有以下 Gruntfile.js
:
module.exports = function(grunt) {
var config = {
pkg: grunt.file.readJSON('package.json'),
/* Some other tasks... */
uglify: {
options: {
banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
},
def: {
files: {
'out/src.js': 'out/src.min.js'
}
}
}
};
grunt.initConfig(config);
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.registerTask('default', [/* <other-tasks>, */ 'uglify:def']);
};
文件夹结构如下:
project
|
+-out (folder)
+-Gruntfile.js
重要:我 运行 grunt
来自 project
文件夹.
在运行宁grunt
的时候,uglify:def
之前有个任务,负责生成src.js
到project/out
。
当我运行 grunt
我可以看到src.js
被生成成project/out
,但是当G运行t 运行s uglisy:def
我收到以下错误:
Running "uglify:def" (uglify) task.
Destination out/src.js not written because src files were empty.
No files created.
我做错了什么?
日志
当 运行 --verbose
我得到:
Running "uglify:def" (uglify) task
Verifying property uglify.def exists in config...OK
Files: [no src] -> out/src.js
Options: banner="/*! My Pack 2015-07-19 */\r\n", footer="", compress={"warnings":false}, mangle={}, beautify=false, report="
min", expression=false, maxLineLen=32000, ASCIIOnly=false, screwIE8=false, quoteStyle=0
>> Destination out/src.js not written because src files were empty.
>> No files created.
我有如下配置,对我来说效果很好。
// uglify javascript
uglify: {
dev: {
options: {
mangle: true
},
files: {
'js/dest.min.js': 'js/source.js'
}
}
},
可能您混淆了目的地和来源。尝试切换它们。
发生这种情况是因为您没有注册以上给定的任务。
好的,让我们从 grunt 中的串联开始:
concat: {
css: {
src: ['./assets/css/*.css', './assets/css/**/*.css'],
dest: './dist/css/style.css'
},
js: {
src: ['./assets/js/*.js', './assets/js/**/*.js'],
dest: './dist/js/script.js'
}
},
所以,这个 concat
应该从上面给定的 url / directories
收集所有 css
文件,并在一个地方连接到给定的目的地,因此 js
。
这将是 style.css
和 script.js
在 dest
目标目录中的简单连接。
但它不会工作,除非你不在下面的行中注册这个 concat
任务:
grunt.registerTask('default', ['concat', 'cssmin', 'uglify']);
所以,直到 concat
不会连接 dest
目录中的那些文件,uglify
将如何收集和工作!
结论:除非您不在 grunt.registerTask
函数中提及它们,否则任务不会执行。
我的问题是源文件的路径不正确。所以与其说文件是 "empty",不如说是找不到它。
我有以下 Gruntfile.js
:
module.exports = function(grunt) {
var config = {
pkg: grunt.file.readJSON('package.json'),
/* Some other tasks... */
uglify: {
options: {
banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
},
def: {
files: {
'out/src.js': 'out/src.min.js'
}
}
}
};
grunt.initConfig(config);
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.registerTask('default', [/* <other-tasks>, */ 'uglify:def']);
};
文件夹结构如下:
project
|
+-out (folder)
+-Gruntfile.js
重要:我 运行 grunt
来自 project
文件夹.
在运行宁grunt
的时候,uglify:def
之前有个任务,负责生成src.js
到project/out
。
当我运行 grunt
我可以看到src.js
被生成成project/out
,但是当G运行t 运行s uglisy:def
我收到以下错误:
Running "uglify:def" (uglify) task.
Destination out/src.js not written because src files were empty.
No files created.
我做错了什么?
日志
当 运行 --verbose
我得到:
Running "uglify:def" (uglify) task
Verifying property uglify.def exists in config...OK
Files: [no src] -> out/src.js
Options: banner="/*! My Pack 2015-07-19 */\r\n", footer="", compress={"warnings":false}, mangle={}, beautify=false, report="
min", expression=false, maxLineLen=32000, ASCIIOnly=false, screwIE8=false, quoteStyle=0
>> Destination out/src.js not written because src files were empty.
>> No files created.
我有如下配置,对我来说效果很好。
// uglify javascript
uglify: {
dev: {
options: {
mangle: true
},
files: {
'js/dest.min.js': 'js/source.js'
}
}
},
可能您混淆了目的地和来源。尝试切换它们。
发生这种情况是因为您没有注册以上给定的任务。
好的,让我们从 grunt 中的串联开始:
concat: {
css: {
src: ['./assets/css/*.css', './assets/css/**/*.css'],
dest: './dist/css/style.css'
},
js: {
src: ['./assets/js/*.js', './assets/js/**/*.js'],
dest: './dist/js/script.js'
}
},
所以,这个 concat
应该从上面给定的 url / directories
收集所有 css
文件,并在一个地方连接到给定的目的地,因此 js
。
这将是 style.css
和 script.js
在 dest
目标目录中的简单连接。
但它不会工作,除非你不在下面的行中注册这个 concat
任务:
grunt.registerTask('default', ['concat', 'cssmin', 'uglify']);
所以,直到 concat
不会连接 dest
目录中的那些文件,uglify
将如何收集和工作!
结论:除非您不在 grunt.registerTask
函数中提及它们,否则任务不会执行。
我的问题是源文件的路径不正确。所以与其说文件是 "empty",不如说是找不到它。