grunt-contrib-copy
grunt-contrib-copy copied to clipboard
copy overrides first file copied
Hello,
I'm new to Grunt so I'm now following a tutorial. There seems to be a problem with the ''copy'' extension. At first I thought I was doing something wrong, but after the following command: ''grunt copy --verbose'', I discovered it was not my fault but instead it seems to be a bug in ''copy''. I could not find a bug code. I hope someone can help with this.
Thanks in advance,
Here is my grunt config under windows 10:
module.exports = function(grunt)
{
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
chmod: {
target1:{
options:{
mode: '666'
},
src: [
'webroot/',
'<%= pkg.webdir%>',
'<%= pkg.webdir%>/*',
]
},
target2: {
options: {
mode: '666'
},
src: [
'webroot',
'webroot/*',
'webroot/resources/assets/js/app/*',
'webroot/resources/assets/js/*',
'resources/assets/js/app/**',
'resources/assets/js/**',
'resources/assets/js/lib/requirejs/*',
'resources/assets/js/lib/jquery/dist/*',
'resources/assets/js/lib/bootstrap/dist/js/*',
'resources/assets/js/lib/bootstrap/js/*'
]
}
},
clean: {
src: ['<%= pkg.webAssetsDir %>/*']
},
copy:{
scripts: {
files: [
{
expend: true,
mode: '666',
src: ['<%= pkg.srcAssetsDir%>/js/app/*',
'<%= pkg.srcAssetsDir%>/js/requirejs.config.js',
'<%= pkg.srcAssetsDir%>/js/lib/requirejs/require.js',
'<%= pkg.srcAssetsDir%>/js/lib/jquery/dist/jquery.js',
'<%= pkg.srcAssetsDir%>/js/lib/bootstrap/dist/js/bootstrap.js',
'<%= pkg.srcAssetsDir%>/js/lib/bootstrap/js/*'
],
dest: '<%= pkg.webdir%>/'
}
]
},
extra: {
files: [
{
expend: true,
flatten: true,
mode: '666',
src: ['<%= pkg.srcAssetsDir%>/images/*'],
dest: '<%= pkg.webAssetsDir%>/images/'
},
{
expend: true,
flatten: true,
mode: '666',
src: [
'<%= pkg.srcAssetsDir%>/fonts/*',
'<%= pkg.srcAssetsDir%>/js/lib/bootstrap/fonts/*'
],
dest: '<%= pkg.webAssetsDir%>/fonts/'
},
]
}
},
uglify:{
options:{
preserveComments: false
},
build:{
files:[
{
expend: true,
cwd: '<%= pkg.webAssetsDir%>/js/',
src: ['**/*.js'],
dest: '<%= pkg.webAssetsDir%>/js/'
}
]
}
},
less:{
bootstrap: {
options: {
paths: ['<%= pkg.srcAssetsDir%>/less/']
},
files: {
'<%= pkg.srcAssetsDir%>/css/bootstrap.css':'<%= pkg.srcAssetsDir%>/less/bootstrap.less'
}
}
},
cssmin:{
combine: {
options: {
keepSpecialComments: 0
},
files: {
'<%= pkg.webAssetsDir%>/css/main.css': [
'<%= pkg.srcAssetsDir%>/css/*'
]
}
}
},
watch: {
scripts: {
files: [
'<%= pkg.srcAssetsDir%>/js/*',
'!<%= pkg.srcAssetsDir%>/js/lib/*'
],
tasks: ['chmod', 'copy:scripts']
},
styles: {
files: [
'<%= pkg.srcAssetsDir%>/less/*',
'<%= pkg.srcAssetsDir%>/css/*'
],
tasks: ['less', 'cssmin']
},
extra: {
files: [
'<%= pkg.srcAssetsDir%>/images/*',
'<%= pkg.srcAssetsDir%>/fonts/*'
],
tasks: ['chmod', 'copy:extra']
}
}
});
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-less');
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-chmod');
grunt.registerTask('default', ['clean', 'chmod', 'copy', 'uglify', 'less', 'cssmin']);
};
and here is the verbose message:
Running "copy:scripts" (copy) task
Verifying property copy.scripts exists in config...OK
Files: resources/assets/js/app/app.js, resources/assets/js/app/index.main.js, resources/assets/js/lib/requirejs/require.js, resources/assets/js/lib/jquery/dist/jquery.js, resources/assets/js/lib/bootstrap/dist/js/bootstrap.js, resources/assets/js/lib/bootstrap/js/affix.js, resources/assets/js/lib/bootstrap/js/alert.js, resources/assets/js/lib/bootstrap/js/button.js, resources/assets/js/lib/bootstrap/js/carousel.js, resources/assets/js/lib/bootstrap/js/collapse.js, resources/assets/js/lib/bootstrap/js/dropdown.js, resources/assets/js/lib/bootstrap/js/modal.js, resources/assets/js/lib/bootstrap/js/popover.js, resources/assets/js/lib/bootstrap/js/scrollspy.js, resources/assets/js/lib/bootstrap/js/tab.js, resources/assets/js/lib/bootstrap/js/tooltip.js, resources/assets/js/lib/bootstrap/js/transition.js -> webroot/
Options: encoding="utf8", processContent=false, processContentExclude=[], timestamp=false, mode=false
Copying resources/assets/js/app/app.js -> webroot\resources\assets\js\app\app.js
Reading resources/assets/js/app/app.js...OK
Writing webroot\resources\assets\js\app\app.js...OK
Copying resources/assets/js/app/index.main.js -> webroot/resources/assets/js/app/app.js
Reading resources/assets/js/app/index.main.js...OK
Writing webroot/resources/assets/js/app/app.js...OK
Copying resources/assets/js/lib/requirejs/require.js -> webroot/resources/assets/js/app/app.js
Reading resources/assets/js/lib/requirejs/require.js...OK
Writing webroot/resources/assets/js/app/app.js...OK
Copying resources/assets/js/lib/jquery/dist/jquery.js -> webroot/resources/assets/js/app/app.js
Reading resources/assets/js/lib/jquery/dist/jquery.js...OK
Writing webroot/resources/assets/js/app/app.js...OK
Copying resources/assets/js/lib/bootstrap/dist/js/bootstrap.js -> webroot/resources/assets/js/app/app.js
Reading resources/assets/js/lib/bootstrap/dist/js/bootstrap.js...OK
Writing webroot/resources/assets/js/app/app.js...OK
Copying resources/assets/js/lib/bootstrap/js/affix.js -> webroot/resources/assets/js/app/app.js
Reading resources/assets/js/lib/bootstrap/js/affix.js...OK
Writing webroot/resources/assets/js/app/app.js...OK
Copying resources/assets/js/lib/bootstrap/js/alert.js -> webroot/resources/assets/js/app/app.js
Reading resources/assets/js/lib/bootstrap/js/alert.js...OK
Writing webroot/resources/assets/js/app/app.js...OK
Copying resources/assets/js/lib/bootstrap/js/button.js -> webroot/resources/assets/js/app/app.js
Reading resources/assets/js/lib/bootstrap/js/button.js...OK
Writing webroot/resources/assets/js/app/app.js...OK
Copying resources/assets/js/lib/bootstrap/js/carousel.js -> webroot/resources/assets/js/app/app.js
Reading resources/assets/js/lib/bootstrap/js/carousel.js...OK
Writing webroot/resources/assets/js/app/app.js...OK
Copying resources/assets/js/lib/bootstrap/js/collapse.js -> webroot/resources/assets/js/app/app.js
Reading resources/assets/js/lib/bootstrap/js/collapse.js...OK
Writing webroot/resources/assets/js/app/app.js...OK
Copying resources/assets/js/lib/bootstrap/js/dropdown.js -> webroot/resources/assets/js/app/app.js
Reading resources/assets/js/lib/bootstrap/js/dropdown.js...OK
Writing webroot/resources/assets/js/app/app.js...OK
Copying resources/assets/js/lib/bootstrap/js/modal.js -> webroot/resources/assets/js/app/app.js
Reading resources/assets/js/lib/bootstrap/js/modal.js...OK
Writing webroot/resources/assets/js/app/app.js...OK
Copying resources/assets/js/lib/bootstrap/js/popover.js -> webroot/resources/assets/js/app/app.js
Reading resources/assets/js/lib/bootstrap/js/popover.js...OK
Writing webroot/resources/assets/js/app/app.js...OK
Copying resources/assets/js/lib/bootstrap/js/scrollspy.js -> webroot/resources/assets/js/app/app.js
Reading resources/assets/js/lib/bootstrap/js/scrollspy.js...OK
Writing webroot/resources/assets/js/app/app.js...OK
Copying resources/assets/js/lib/bootstrap/js/tab.js -> webroot/resources/assets/js/app/app.js
Reading resources/assets/js/lib/bootstrap/js/tab.js...OK
Writing webroot/resources/assets/js/app/app.js...OK
Copying resources/assets/js/lib/bootstrap/js/tooltip.js -> webroot/resources/assets/js/app/app.js
Reading resources/assets/js/lib/bootstrap/js/tooltip.js...OK
Writing webroot/resources/assets/js/app/app.js...OK
Copying resources/assets/js/lib/bootstrap/js/transition.js -> webroot/resources/assets/js/app/app.js
Reading resources/assets/js/lib/bootstrap/js/transition.js...OK
Writing webroot/resources/assets/js/app/app.js...OK
Copied 17 files
Running "copy:extra" (copy) task
Verifying property copy.extra exists in config...OK
Files: [no src] -> webroot/resources/assets/images/
Files: resources/assets/js/lib/bootstrap/fonts/glyphicons-halflings-regular.eot, resources/assets/js/lib/bootstrap/fonts/glyphicons-halflings-regular.svg, resources/assets/js/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf, resources/assets/js/lib/bootstrap/fonts/glyphicons-halflings-regular.woff, resources/assets/js/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2 -> webroot/resources/assets/fonts/
Options: encoding="utf8", processContent=false, processContentExclude=[], timestamp=false, mode=false
Copying resources/assets/js/lib/bootstrap/fonts/glyphicons-halflings-regular.eot -> webroot\resources\assets\fonts\resources\assets\js\lib\bootstrap\fonts\glyphicons-halflings-regular.eot
Reading resources/assets/js/lib/bootstrap/fonts/glyphicons-halflings-regular.eot...OK
Writing webroot\resources\assets\fonts\resources\assets\js\lib\bootstrap\fonts\glyphicons-halflings-regular.eot...OK
Copying resources/assets/js/lib/bootstrap/fonts/glyphicons-halflings-regular.svg -> webroot/resources/assets/fonts/resources/assets/js/lib/bootstrap/fonts/glyphicons-halflings-regular.eot
Reading resources/assets/js/lib/bootstrap/fonts/glyphicons-halflings-regular.svg...OK
Writing webroot/resources/assets/fonts/resources/assets/js/lib/bootstrap/fonts/glyphicons-halflings-regular.eot...OK
Copying resources/assets/js/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf -> webroot/resources/assets/fonts/resources/assets/js/lib/bootstrap/fonts/glyphicons-halflings-regular.eot
Reading resources/assets/js/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf...OK
Writing webroot/resources/assets/fonts/resources/assets/js/lib/bootstrap/fonts/glyphicons-halflings-regular.eot...OK
Copying resources/assets/js/lib/bootstrap/fonts/glyphicons-halflings-regular.woff -> webroot/resources/assets/fonts/resources/assets/js/lib/bootstrap/fonts/glyphicons-halflings-regular.eot
Reading resources/assets/js/lib/bootstrap/fonts/glyphicons-halflings-regular.woff...OK
Writing webroot/resources/assets/fonts/resources/assets/js/lib/bootstrap/fonts/glyphicons-halflings-regular.eot...OK
Copying resources/assets/js/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2 -> webroot/resources/assets/fonts/resources/assets/js/lib/bootstrap/fonts/glyphicons-halflings-regular.eot
Reading resources/assets/js/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2...OK
Writing webroot/resources/assets/fonts/resources/assets/js/lib/bootstrap/fonts/glyphicons-halflings-regular.eot...OK
Copied 5 files
Done, without errors.
hello guys,
I've created a fix:
change copy.js line @44 to @54
var dest = filePair.dest;
isExpandedPair = filePair.orig.expand || false;
filePair.src.forEach(function(src) {
src = unixifyPath(src);
dest = unixifyPath(dest);
if (detectDestType(dest) === 'directory') {
dest = (isExpandedPair) ? dest : path.join(dest, src);
}
to this:
_dest = unixifyPath(_dest);
var dest = (isExpandedPair) ? dest : path.join(_dest, src);
Not just that but for me the content of the first file is copied to the second file. Going back to 0.7.0 fixes it.