Grunt.js,警告:无法写入“src”文件(错误代码:EISDIR)
Posted
技术标签:
【中文标题】Grunt.js,警告:无法写入“src”文件(错误代码:EISDIR)【英文标题】:Grunt.js, Warning: Unable to write "src" file (Error code: EISDIR) 【发布时间】:2014-01-24 15:01:53 【问题描述】:我有一个用CoffeeScript
写的Gruntfile
,当cssmin
任务运行时,我不断收到一个(Error code: EISDIR)
。以详细模式运行任务后,我得到以下信息:
Running "cssmin" task
Running "cssmin:src" (cssmin) task
Verifying property cssmin.src exists in config...OK
Files: assets/z.styles.concat.css.liquid -> src
Options: report=false
Reading assets/z.styles.concat.css.liquid...OK
Writing src...ERROR
Warning: Unable to write "src" file (Error code: EISDIR). Use --force to continue.
这是我的 cssmin 任务:
cssmin:
src: 'assets/z.styles.concat.css.liquid'
dest: 'assets/styles.min.css.liquid'
z.styles.concat.css.liquid
是在concat
运行后创建的,并成功输出到 assets 文件夹。 src 属性中列出的路径是正确的。
知道什么可能引发错误吗?
另外,为了方便起见,这里是整个 gruntfile。
咕噜咕噜的咖啡:
module.exports = (grunt) ->
# Project configuration.
grunt.initConfig
pkg: grunt.file.readJSON 'package.json'
files:
grunt: ['gruntfile.js']
css: ['assets/screen.css', 'assets/styles.css.liquid']
scss: ['src/scss/**/*.scss']
js: ['src/js/**/*.js'] #(if we need liquid templating), 'src/js/**/*.js.liquid', 'assets/**/*.js.liquid']
coffee: ['src/js/coffee/**/*.coffee', 'src/js/coffee/**/*.coffee.liquid']
img: ['src/images/**/*.png,jpeg,svg,jpg,gif']
# Image Processing
smushit:
path:
src: '<%= files.img %>' #recursively replace minified images
dest: 'assets'
# Concatenation Processing
concat:
css:
src: ['<%= files.css %>']
dest: 'assets/z.styles.concat.css.liquid'
js:
src: ['<%= files.js %>']
dest: 'src/js/z.scripts.concat.js'
# javascript Processing
coffee:
app:
expand: true
cwd: 'src/js/coffee'
src: ['**/*.coffee', '**/*.coffee.liquid']
dest: 'src/js'
ext: '.js'
uglify:
dist:
src: ['src/js/z.scripts.concat.js']
dest: 'assets/scripts.min.js'
jshint:
files: ['<%= files.grunt %>', 'src/js/z.scripts.concat.js']
options:
jquery: true
smarttabs: true
curly: true
eqeqeq: true
immed: true
latedef: true
newcap: true
noarg: true
sub: true
undef: true
boss: true
eqnull: true
browser: true
globals:
jQuery: true
console: true
undef: true
unused: false
# CSS Processing
compass:
dist:
options:
sassDir: 'src/scss'
cssDir: 'assets'
imagesDir: 'assets',
javascriptsDir: 'assets',
outputStyle: 'expanded'
cssmin:
src: 'assets/z.styles.concat.css.liquid'
dest: 'assets/styles.min.css.liquid'
# watch tasks
watch:
options:
nospawn: true
events: ['changed', 'added']
files: [
'<%= files.js %>'
'<%= files.coffee %>'
'<%= files.scss %>'
]
tasks: ['default']
# These plugins provide necessary tasks.
grunt.loadNpmTasks 'grunt-contrib-coffee'
grunt.loadNpmTasks 'grunt-contrib-watch'
grunt.loadNpmTasks 'grunt-contrib-concat'
grunt.loadNpmTasks 'grunt-contrib-jshint'
grunt.loadNpmTasks 'grunt-contrib-uglify'
grunt.loadNpmTasks 'grunt-contrib-cssmin'
grunt.loadNpmTasks 'grunt-smushit'
grunt.loadNpmTasks 'grunt-contrib-compass'
# Default task.
grunt.registerTask 'default', [
'coffee'
'concat:js'
'jshint'
'uglify'
'concat:css',
'cssmin'
]
# Minify task
# Run the default task then losslessly minify images with Yahoo!'s Smush-It
grunt.registerTask 'minify', ['default', 'smushit']
【问题讨论】:
您可以尝试使用 --verbose 选项运行任务吗? 运行 grunt your_task_name --verbose @AndreyShustariov 刚刚更新了问题 【参考方案1】:在您的输出中,Grunt 尝试运行 cssmin:src
任务,然后尝试写入源文件。这不是我们想要的结果吗?
您需要为 cssmin 任务指定一个名称,因为它是一个多任务。有关更多信息,请参阅Grunt documentation。
将你的 grunt 配置更改为
cssmin:
minify:
src: 'assets/z.styles.concat.css.liquid'
dest: 'assets/styles.min.css.liquid'
【讨论】:
宾果游戏芽!知道为什么必须命名此任务吗?【参考方案2】:使用 NodeJS 4.2.2 和 Grunt 0.4.5,
当编译的文件名与现有目录命名相同时,我遇到了 EISDIR 写入错误。它们都处于同一层次结构级别。重命名解决了这个问题。
【讨论】:
【参考方案3】:看来,src 指向目录。尝试将 /** 添加到路径的末尾。
assets/z.styles.concat.css.liquid/**
【讨论】:
Running "cssmin:src" (cssmin) task >> Destination not written because minified CSS was empty.
基本上我认为这只是告诉它寻找一个不存在的目录。
我记得,代码 EISDIR 的意思是,该目录是作为文件访问的。
嗯,不幸的是它是一个文件。以上是关于Grunt.js,警告:无法写入“src”文件(错误代码:EISDIR)的主要内容,如果未能解决你的问题,请参考以下文章
警告:require_once(Composer/PHPMailer/vendor/phpmailer/phpmailer/src/autoload.php):无法打开流:没有这样的文件或目录
IntelliJ IDEA无法读取src下的配置文件 报错找不到 解决方案
VSCode无法写入用户设置 请打开用户设置并清除错误或警告, 然后重式
VSCode无法写入用户设置 请打开用户设置并清除错误或警告, 然后重式