【发布时间】:2017-01-05 21:56:36
【问题描述】:
我正在开发一个使用 ASP.NET MVC 5 框架开发的应用程序。我正在使用 Visual Studio 2013 编写我的应用程序。
我需要使用gulp 来自动编译我的 sass 文件并将它们发布到 bundle.css 文件中。
要做到这一点,这就是我所做的
- 在我的机器上安装了NodeJs
- 使用
npm install -g gulp全局安装gulp - 在项目的根项目中创建了一个名为
gulpfile.js的文件 - 使用
npm init命令创建了package.json文件 - 通过从我的项目
npm install gulp --save-dev的根目录执行以下命令,将 gulp 添加到我的开发依赖项中 - 将以下代码添加到我的
gulpfile.js -
我从命令控制台触发了
gulp命令,显示以下信息使用 gulpfile ...gulpfile.js
开始“观看”...
21 毫秒后完成“观看”
开始“默认”...
31 µs 后完成“默认”
但是当我将代码写入我的 ~/Assets/Sass/**/*.sass 时,没有任何东西可以按预期保存到 ~/Public/Css/bundle.css 中
这是gulpfile.js 的样子
const gulp = require('gulp'),
sass = require('gulp-ruby-sass');
// Default task which will be be fired when the runner is started
gulp.task('default', ['watch']);
// listener task
gulp.task('watch', function(){
//Watch any change in the sass directory and trigger the "compileSass" for every save
gulp.watch('~/Assets/Sass/**/*.sass', ['compileSass']);
});
// Task to compile the sass files
gulp.task('compileSass', () =>
sass('~/Assets/Sass/**/*.sass')
.on('error', sass.logError)
.pipe(gulp.dest('~/Public/Css/bundle.css'))
);
我在这里缺少什么?每次保存后如何让被监视者观看并触发任务?
更新
我从使用gulp-ruby-sass 插件切换到使用gulp-scss。现在,我每次保存 scss 文件时都会运行任务,但由于某种原因它不会更新目标文件。
这是我的gulpfile.js 文件的样子
const gulp = require('gulp'),
scss = require('gulp-scss');
// Default task which will be be fired when the runner is started
gulp.task('default', ['watch']);
// listener task
gulp.task('watch', function(){
//Watch any change in the "Sass" directory and trigger the "compileScss" for every save
gulp.watch('./Assets/Scss/**/*.scss', ['compileScss']);
});
// Task to compile the "Scss" files
gulp.task('compileScss', function () {
gulp.src('./Assets/Scss/**/*.scss')
.pipe(scss({ "bundleExec": true }))
.pipe(gulp.dest('./Public/Css/bundle.css'));
});
【问题讨论】:
-
我不确定 gulp 是否理解路径中的波浪号 (
~)。尝试使用./而不是~/开始您的路径。另外,我会验证您的compileSass任务在直接调用时是否按预期工作(没有手表)。 -
感谢您的有用提示!现在我将
~更改为.后出现新错误。这是错误'sass' is not recognized as an internal or external command, operable program or batch file. Error in plugin 'gulp-ruby-sass' Message: Gem undefined is not installed. -
如果你想使用
gulp-ruby-sass,你可能需要在你的机器上安装Ruby和sass gem——参考this question。但是,您可能会发现使用 gulp-sass 会更容易,除非您有充分的理由使用 gulp-ruby-sass。 -
@SergeyK 谢谢。我切换到使用
gulp-scss现在每次我保存扩展名为scss的文件时,我都可以在控制台中看到一个新行,上面写着StartingcompileScss.... FinishedcompileScss` 但文件bundle.css 没有得到填充。是的,我在我的 site.scss 文件中添加了代码。请查看我更新的问题以查看我当前的代码