我正在使用VS2015和Gulp.我打开Task Runner Explorer并点击刷新,这显示在日志中:
Failed to run "C:\Projects\Test\Gulpfile.js"...
cmd.exe /c gulp --tasks-simple
Error: `libsass` bindings not found in C:\Projects\Test\node_modules\gulp-sass\node_modules\node-sass\vendor\win32-ia32-11\binding.node. Try reinstalling `node-sass`?
at Object.sass.getBinaryPath (C:\Projects\Test\node_modules\gulp-sass\node_modules\node-sass\lib\extensions.js:148:11)
at Object.<anonymous> (C:\Projects\Test\node_modules\gulp-sass\node_modules\node-sass\lib\index.js:16:36)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (C:\Projects\Test\node_modules\gulp-sass\index.js:163:21)
at Module._compile (module.js:456:26)
Run Code Online (Sandbox Code Playgroud)
所以我尝试cmd.exe /c gulp --tasks-simple在PowerShell中运行,在同一目录中,它工作正常 - 它返回一个任务列表.
我也能很好地运行与SASS相关的任务,所以我不确定为什么在通过VS运行而不是直接在命令行上运行SASS时会抱怨它.
visual-studio gulp gulp-sass vs-2015-preview task-runner-explorer
不是gulp特定的问题本身,但如何从gulpfile.js中的package.json文件获取信息; 例如,我想获取主页或名称并在任务中使用它.
我有一个gulp任务,试图将.scss文件转换为.css文件(使用gulp-ruby-sass),然后将生成的.css文件放在它找到原始文件的同一个地方.问题是,因为我使用的是通配模式,所以我不一定知道原始文件的存储位置.
在下面的代码中,我试图使用gulp-tap来点击流并找出当前文件的文件路径,从中读取流:
gulp.task('convertSass', function() {
var fileLocation = "";
gulp.src("sass/**/*.scss")
.pipe(sass())
.pipe(tap(function(file,t){
fileLocation = path.dirname(file.path);
console.log(fileLocation);
}))
.pipe(gulp.dest(fileLocation));
});
Run Code Online (Sandbox Code Playgroud)
根据输出console.log(fileLocation),这段代码看起来应该可以正常工作.但是,生成的CSS文件似乎放在一个比我预期的更高的目录中.它应该在哪里project/sass/partials,结果文件路径就是project/partials.
如果有一个更简单的方法,我肯定会更加欣赏这个解决方案.谢谢!
我目前正在使用gulp来调用bash脚本来清理我的dist/目录并将相应的文件移动到clean目录.我希望这可以用gulp完成,因为我不确定该脚本是否可以在非*nix文件系统上运行.
到目前为止,我正在使用gulp-clean模块来清理dist/目录,但是当我尝试将所需目录及其文件移动到dist文件夹时,目录为空.
var gulp = require('gulp'),
clean = require('gulp-clean');
gulp.task('clean', function(){
return gulp.src(['dist/*'], {read:false})
.pipe(clean());
});
gulp.task('move',['clean'], function(){
gulp.src(['_locales', 'icons', 'src/page_action', 'manifest.json'])
.pipe(gulp.dest('dist'));
});
gulp.task('dist', ['move']);
Run Code Online (Sandbox Code Playgroud)
调用带有正确目录gulp dist的dist/目录中的结果,但它们都是空的
$ ls dist/*
dist/manifest.json
dist/_locales:
dist/icons:
dist/page_action:
Run Code Online (Sandbox Code Playgroud)
如何将目录及其内容复制到该dist/文件夹?
这是一个组合任务,我不知道如何用任务依赖项替换它.
...
gulp.task('watch', function () {
var server = function(){
gulp.run('jasmine');
gulp.run('embed');
};
var client = function(){
gulp.run('scripts');
gulp.run('styles');
gulp.run('copy');
gulp.run('lint');
};
gulp.watch('app/*.js', server);
gulp.watch('spec/nodejs/*.js', server);
gulp.watch('app/backend/*.js', server);
gulp.watch('src/admin/*.js', client);
gulp.watch('src/admin/*.css', client);
gulp.watch('src/geojson-index.json', function(){
gulp.run('copygeojson');
});
});
Run Code Online (Sandbox Code Playgroud)
相应的更改日志 https://github.com/gulpjs/gulp/blob/master/CHANGELOG.md#35 [弃用gulp.run]
这是我的gulpfile:
// Modules & Plugins
var gulp = require('gulp');
var concat = require('gulp-concat');
var myth = require('gulp-myth');
var uglify = require('gulp-uglify');
var jshint = require('gulp-jshint');
var imagemin = require('gulp-imagemin');
// Styles Task
gulp.task('styles', function() {
return gulp.src('app/css/*.css')
.pipe(concat('all.css'))
.pipe(myth())
.pipe(gulp.dest('dist'));
});
// Scripts Task
gulp.task('scripts', function() {
return gulp.src('app/js/*.js')
.pipe(jshint())
.pipe(jshint.reporter('default'))
.pipe(concat('all.js'))
.pipe(uglify())
.pipe(gulp.dest('dist'));
});
// Images Task
gulp.task('images', function() {
return gulp.src('app/img/*')
.pipe(imagemin())
.pipe(gulp.dest('dist/img'));
});
// Watch Task
gulp.task('watch', function() {
gulp.watch('app/css/*.css', 'styles');
gulp.watch('app/js/*.js', 'scripts');
gulp.watch('app/img/*', 'images');
});
// …Run Code Online (Sandbox Code Playgroud) 我正在尝试传递gulp.src我想要它处理的文件数组.这是阵列的原样.
['bower_components/jquery/jquery.js',
'bower_components/superscrollorama/js/greensock/TweenMax.min.js',
'bower_components/superscrollorama/jquery.superscrollorama.js' ]
Run Code Online (Sandbox Code Playgroud)
我发现gulp.src似乎并不喜欢这样,第三个元素没有通过最终目的地.
当我引入一些像这样的通配符时,我发现一切正常:
['bower_components/**/jquery.js',
'bower_components/**/js/greensock/TweenMax.min.js',
'bower_components/**/jquery.superscrollorama.js' ]
Run Code Online (Sandbox Code Playgroud)
但为什么?与globbing的工作方式有关吗?我用Google搜索但无法找到答案.
也许这不是globbing的预期目的,但它对我来说没有意义,它应该以这种方式工作.任何人都能解释一下吗?
对于每个模块,我有一些文件需要复制到构建目录,我正在寻找一种方法来最小化重复的代码:
gulp.src('./client/src/modules/signup/index.js')
.pipe(gulp.dest('./build/public/js/signup'));
gulp.src('./client/src/modules/admin/index.js')
.pipe(gulp.dest('./build/public/js/admin'));
Run Code Online (Sandbox Code Playgroud)
这样的事情:
gulp.src('./client/src/modules/(.*)/index.js')
.pipe(gulp.dest('./build/public/js/$1'));
Run Code Online (Sandbox Code Playgroud)
显然上面的方法不起作用,有没有办法做到这一点,或者已经这样做的npm?
谢谢
我安装了gulp(全局),它看起来很有效,因为它运行了这段代码:
??? tildify@0.2.0
??? interpret@0.3.5
??? pretty-hrtime@0.2.1
??? deprecated@0.0.1
??? archy@0.0.2
??? minimist@0.2.0
??? semver@2.3.2
??? orchestrator@0.3.7 (stream-consume@0.1.0, sequencify@0.0.7, end-of-stream@0.1.5)
??? chalk@0.5.1 (escape-string-regexp@1.0.1, ansi-styles@1.1.0, supports-color@0.2.0, strip-ansi@0.3.0, has-ansi@0.1.0)
??? gulp-util@2.2.20 (lodash._reinterpolate@2.4.1, dateformat@1.0.8-1.2.3, vinyl@0.2.3, through2@0.5.1, multipipe@0.1.1, lodash.template@2.4.1)
??? liftoff@0.12.0 (extend@1.2.1, minimist@0.1.0, resolve@0.7.4, findup-sync@0.1.3)
??? vinyl-fs@0.3.5 (graceful-fs@3.0.2, lodash@2.4.1, mkdirp@0.5.0, strip-bom@0.3.1, vinyl@0.2.3, through2@0.5.1, glob-watcher@0.0.6, glob-stream@3.1.14)
Run Code Online (Sandbox Code Playgroud)
但是当我打字gulp时说-bash: gulp: command not found
知道发生了什么事吗?
Visual Studio 2015内置支持Grunt,Bower,Gulp和NPM for ASP.NET 5项目等工具.
但是,当我使用Visual Studio 2015创建ASP.NET 4.5.2项目时,它不使用这些工具.我想使用bower而不是nuget来管理客户端软件包.
我可以在Visual Studio 2013中找到有关使用这些工具的信息(例如,请参阅此问题).但我想Visual Studio 2015的程序是不同的,因为它内置了对这些工具的支持.