gpt4 book ai didi

javascript - Grunt watch pattern.indexOf 不是函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:00:46 39 4
gpt4 key购买 nike

我正在尝试使用 Grunt 的 grunt-contrib-watch 插件来监视一些文件,然后运行任务,这就是我的 Gruntfile.js

module.exports = function(grunt){
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
sass: {
options: {
sourceMap: true,
outputStyle: 'compressed'
},
dist: {
files: {
'static/stylesheets/main.min.css': 'static/stylesheets/sass/main.scss',
/*'bower_components/foundation-sites/dist/foundation.min.css': 'bower_components/foundation-sites/scss/foundation.scss'*/
}
}
},
uglify: {
dist: {
files: {
'static/javascript/main.min.js': 'static/javascript/main.js'
}
}
},
watch: {
files: [
'<%= sass.dist.files %>',
'<%= uglify.dist.files %>'
],
tasks: [
'sass',
'uglify'
]
}
});

grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-sass');
grunt.loadNpmTasks('grunt-contrib-uglify');

grunt.registerTask('default', ['watch']);
};

当我运行它时,它一遍又一遍地运行,当我停止它时,我看到我有这条消息:

Running "watch" task Waiting... Warning: pattern.indexOf is not a function

我真的不知道是什么问题。有人知道这里发生了什么吗?

更新:

显然,问题是因为我调用文件的方式,因为我将其更改为:'static/stylesheets/sass/*.scss' 并且效果很好,但我想知道为什么另一种方式不起作用' 工作,因为我认为这是一种更有用的方法。

最佳答案

grunt-contrib-watch期望单个模式字符串或模式字符串数组作为其 files 配置的值。但是,您在配置中使用的模板评估为对象。您的 watch.files 值计算如下:

files: [
{ 'static/stylesheets/main.min.css': 'static/stylesheets/sass/main.scss' },
{ 'static/javascript/main.min.js': 'static/javascript/main.js' }
]

当模式匹配尝试运行时失败,因为对象上没有 indexOf 方法。由于 grunt-contrib-watch 永远运行的事实,存在一个尝试和失败构建监视文件列表的无限循环。

您通常会使用如下内容配置您的监视文件:

files: [
'static/**/*.scss',
'static/**/*.js'
]

但是以上内容会导致您的情况出现问题,因为您的缩小 JS 文件与源 JS 文件位于同一文件夹中。您可能可以通过将 '!static/**/*.min.js' 添加到您的文件数组来解决这个问题,但更好的解决方案是将所有已编译的文件放入一个单独的文件夹中.

关于javascript - Grunt watch pattern.indexOf 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39188684/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com