Gulp.js TypeError: glob pattern string required
Gulp.js TypeError: glob pattern string required
我正在跟随 this tutorial 在 Ubuntu 上设置 gulp.js。但是,当我在终端中 运行 gulp styles
时,出现 'TypeError: glob pattern string required' 错误。我是一个彻头彻尾的 gulp 菜鸟 - 谁能给我指出正确的方向?
我的 gulpfile.js
文件:
var gulp = require('gulp'),
sass = require('gulp-ruby-sass'),
autoprefixer = require('gulp-autoprefixer'),
minifycss = require('gulp-minify-css'),
rename = require('gulp-rename');
gulp.task('styles', function() {
return gulp.src('sass/*.scss')
.pipe(sass({ style: 'expanded' }))
.pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1'))
.pipe(gulp.dest('css'))
.pipe(rename({suffix: '.min'}))
.pipe(minifycss())
.pipe(gulp.dest('css'));
});
我的文件目录:
编辑:
我在我的 gulp.js
文件中试过这个:
gulp.task('styles', function () {
return sass('sass/*.scss', {
style: 'expanded'
})
.pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1'))
.pipe(gulp.dest('css'))
.pipe(rename({suffix: '.min'}))
.pipe(minifycss())
.pipe(gulp.dest('css'));
});
并收到此错误输出:
我的语法有误吗?
我过去遇到过类似的问题。您需要直接使用 sass 插件(而不是使用管道)
请在此处查看 DOC,您必须使用 gulp-ruby-sass
而不是直接使用 :-
gulp.task('styles', function () {
return sass(paths.sassSrcPath, {
style: 'compressed',
loadPath: [paths.sassImportsPath]
})
.pipe(gulp.dest(paths.sassDestPath));
});
可能对你有帮助。
gulp 抛出的错误与 post-css
npm 模块有关。由于您使用的是 sass,我不确定为什么会这样。尝试删除它和 post 你的 package.json
文件。
根据文档,您不想根据 gulp-ruby-sass 在第一个声明中使用 pipe
。试试这个:
// Styles Task
gulp.task('styles', function () {
return sass(paths.sassSrcPath, {
style: 'compressed',
loadPath: [paths.sassImportsPath]
})
.pipe(gulp.dest(paths.sassDestPath));
});
更多in-depth信息
使用 gulp-sass 而不是 gulp-ruby-sass。在开发周期的这一点上,它是 Sass 的一个更快、更好支持的版本。
这就是我在 styles
构建任务中通常使用 gulp-sass 的方式(基于 Yeoman 生成器 gulp-webapp):
gulp.task('styles', () => {
return gulp.src('app/styles/*.scss')
.pipe($.sourcemaps.init())
.pipe($.sass.sync({
outputStyle: 'expanded',
precision: 10,
includePaths: ['.']
}).on('error', $.sass.logError))
.pipe($.autoprefixer({browsers: ['last 1 version']}))
.pipe($.sourcemaps.write())
.pipe(gulp.dest('.tmp/styles'))
.pipe(reload({stream: true}));
});
它与您的类似,但它输出源映射,这在您调试压缩代码时非常有用。您必须将 gulp-sourcemaps 添加到 package.json
才能使其正常工作。
虽然这不是我最初问题的直接解决方案,但这是我如何让最基本的 gulp 脚本正常工作(几乎所有教程都超出了我的预期,所以我有通过反复试验自己弄清楚)。
这是我的 gulp.js
文件:
var gulp = require('gulp');
var babel = require('gulp-babel');
gulp.task('default', function() {
return gulp.src('js/dev/main.js')
.pipe(babel({
presets: ['es2015']
}))
.pipe(gulp.dest('js'));
});
这是我的文件结构:
基本上就是随意利用这个gulpbabel.js plugin and converting my (ECMA6) javascript in the js/dev/main.js
to ECMA5 javascript in the form of a /js/main.js
file it creates upon entering gulp
into the terminal. From here, add/remove your own gulp plugins。希望这会有所帮助。
我正在跟随 this tutorial 在 Ubuntu 上设置 gulp.js。但是,当我在终端中 运行 gulp styles
时,出现 'TypeError: glob pattern string required' 错误。我是一个彻头彻尾的 gulp 菜鸟 - 谁能给我指出正确的方向?
我的 gulpfile.js
文件:
var gulp = require('gulp'),
sass = require('gulp-ruby-sass'),
autoprefixer = require('gulp-autoprefixer'),
minifycss = require('gulp-minify-css'),
rename = require('gulp-rename');
gulp.task('styles', function() {
return gulp.src('sass/*.scss')
.pipe(sass({ style: 'expanded' }))
.pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1'))
.pipe(gulp.dest('css'))
.pipe(rename({suffix: '.min'}))
.pipe(minifycss())
.pipe(gulp.dest('css'));
});
我的文件目录:
编辑:
我在我的 gulp.js
文件中试过这个:
gulp.task('styles', function () {
return sass('sass/*.scss', {
style: 'expanded'
})
.pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1'))
.pipe(gulp.dest('css'))
.pipe(rename({suffix: '.min'}))
.pipe(minifycss())
.pipe(gulp.dest('css'));
});
并收到此错误输出:
我的语法有误吗?
我过去遇到过类似的问题。您需要直接使用 sass 插件(而不是使用管道)
请在此处查看 DOC,您必须使用 gulp-ruby-sass
而不是直接使用 :-
gulp.task('styles', function () {
return sass(paths.sassSrcPath, {
style: 'compressed',
loadPath: [paths.sassImportsPath]
})
.pipe(gulp.dest(paths.sassDestPath));
});
可能对你有帮助。
gulp 抛出的错误与 post-css
npm 模块有关。由于您使用的是 sass,我不确定为什么会这样。尝试删除它和 post 你的 package.json
文件。
根据文档,您不想根据 gulp-ruby-sass 在第一个声明中使用 pipe
。试试这个:
// Styles Task
gulp.task('styles', function () {
return sass(paths.sassSrcPath, {
style: 'compressed',
loadPath: [paths.sassImportsPath]
})
.pipe(gulp.dest(paths.sassDestPath));
});
更多in-depth信息
使用 gulp-sass 而不是 gulp-ruby-sass。在开发周期的这一点上,它是 Sass 的一个更快、更好支持的版本。
这就是我在 styles
构建任务中通常使用 gulp-sass 的方式(基于 Yeoman 生成器 gulp-webapp):
gulp.task('styles', () => {
return gulp.src('app/styles/*.scss')
.pipe($.sourcemaps.init())
.pipe($.sass.sync({
outputStyle: 'expanded',
precision: 10,
includePaths: ['.']
}).on('error', $.sass.logError))
.pipe($.autoprefixer({browsers: ['last 1 version']}))
.pipe($.sourcemaps.write())
.pipe(gulp.dest('.tmp/styles'))
.pipe(reload({stream: true}));
});
它与您的类似,但它输出源映射,这在您调试压缩代码时非常有用。您必须将 gulp-sourcemaps 添加到 package.json
才能使其正常工作。
虽然这不是我最初问题的直接解决方案,但这是我如何让最基本的 gulp 脚本正常工作(几乎所有教程都超出了我的预期,所以我有通过反复试验自己弄清楚)。
这是我的 gulp.js
文件:
var gulp = require('gulp');
var babel = require('gulp-babel');
gulp.task('default', function() {
return gulp.src('js/dev/main.js')
.pipe(babel({
presets: ['es2015']
}))
.pipe(gulp.dest('js'));
});
这是我的文件结构:
基本上就是随意利用这个gulpbabel.js plugin and converting my (ECMA6) javascript in the js/dev/main.js
to ECMA5 javascript in the form of a /js/main.js
file it creates upon entering gulp
into the terminal. From here, add/remove your own gulp plugins。希望这会有所帮助。