gruntjs - 咕噜任务副本未能将文件写入目标
问题描述
我是 gruntjs 的新手,很难理解为什么简单的复制文件任务不起作用。下面是我在 Gruntfile.js 中的代码。
module.exports = function (grunt) {
"use strict";
// Project configuration
grunt.initConfig({
pkg: grunt.file.readJSON("package.json"),
// copy other css files
copy: {
dist: {
files: {
//expand: true, // required when using cwd
//cwd: ['.'], // set working folder / root to copy
src: './wwwroot/lib/html5-reset/assets/css/reset.css', // copy all files and subfolders
dest: './wwwroot/css/' // destination folder
}
}
}
});
grunt.loadNpmTasks("grunt-contrib-copy");
grunt.registerTask("copyCss", ["copy"]);
};
当我执行任务时出现以下错误
正在加载“Gruntfile.js”任务...OK
+ copyCss
运行任务:复制
运行“复制”任务
运行“复制:dist”(复制)任务
验证属性 copy.dist 存在于配置中...确定
文件:./wwwroot/ lib/html5-reset/assets/css/
reset.css -> src 文件:./wwwroot/css/ -> dest
选项:encoding="utf8", processContent=false, processContentExclude=[], timestamp=false, mode= false
复制 ./wwwroot/lib/html5-reset/assets/css/reset.css -> src
读取 ./wwwroot/lib/html5-reset/assets/css/reset.css...OK
写入 src...错误
警告:无法写入“src”文件(错误代码:EISDIR)。使用--force,继续。
完成,但有警告。
进程以代码 0 终止。
感谢您在查明问题方面的帮助。
解决方案
nodejs错误EISDIR
描述为:
EISDIR
(是一个目录):一个操作需要一个文件,但给定的路径名是一个目录。
Gruntfile.js
如下所示配置您的。
Gruntfile.js
module.exports = function (grunt) {
"use strict";
// Project configuration
grunt.initConfig({
pkg: grunt.file.readJSON("package.json"),
copy: {
dist: {
expand: true,
cwd: 'wwwroot/lib/html5-reset/assets/css',
src: 'reset.css',
dest: 'wwwroot/css'
}
}
});
grunt.loadNpmTasks("grunt-contrib-copy");
grunt.registerTask("copyCss", ["copy"]);
};
运行以下命令:
grunt copyCss
reset.css
将从目录命名的文件复制wwwroot/lib/html5-reset/assets/css/
到wwwroot/css/
目录中。
之前的例子:
.
├── Gruntfile.js
├── node_modules
│ └── ...
├── package.json
└── wwwroot
└── lib
└── html5-reset
└── assets
└── css
└── reset.css <--------------
示例之后:
.
├── Gruntfile.js
├── node_modules
│ └── ...
├── package.json
└── wwwroot
├── css
│ └── reset.css <--------------
└── lib
└── html5-reset
└── assets
└── css
└── reset.css <--------------
编辑:创建自定义任务而不是使用grunt-contrib-copy
如果您只想复制一个文件,那么使用grunt-contrib-copy
似乎有些不必要。考虑改为创建自定义任务。例如:
Gruntfile.js
module.exports = function (grunt) {
"use strict";
grunt.initConfig({
pkg: grunt.file.readJSON("package.json")
});
grunt.registerTask('copyCss', 'Copies a single file', function() {
grunt.file.copy(
'wwwroot/lib/html5-reset/assets/css/reset.css',
'wwwroot/css/reset.css'
)
});
};
上述自定义任务利用了 grunt 的内置
grunt.file.copy
方法。您可能还想考虑向该自定义任务添加一些错误处理。例如,您可能想利用 grunt 的内置
grunt.file.exists
方法来检查reset.css
文件是否存在,然后再继续复制它。
推荐阅读
- docker - 如何在 GitHub Release 中获取最新版本的文件并在 Dockerfile 中下载文件?
- java - Eclipse Java FX 插件在市场上不可用
- javascript - req.check 不起作用?
- animation - 成帧器运动打开关闭动画不起作用
- excel - 有没有办法在 Excel 上“DIY”具有动态值的图表?
- css - 如何在父容器边框之外显示工具提示?
- visual-studio-code - Vscode上的源代码控制选项卡不起作用,卡在时钟符号上,没有任何反应
- r - 在 R 中保存循环的输出(到数据帧中)
- javascript - 在 Next.JS 中获取站点 URL
- c# - 在 AWS 开发工具包中使用 AmazonSecurityTokenServiceClient 时出现 System.InvalidOperationException