【问题标题】:Gulp: Unable to import Bourbon to stylesheetGulp:无法将 Bourbon 导入样式表
【发布时间】:2018-01-01 23:52:33
【问题描述】:

我最近对我的 package.json 进行了更新。将 Bourbon 导入我的 scss 样式表后,我遇到了以下Error: File to import not found or unreadable: bourbon

在我的节点模块中,我可以看到我有一个 bourbon-neat 和 bourbon 文件夹。

我需要了解并为我目前正在从事的项目解决此问题,因此我们将不胜感激。

Package.json 文件

"devDependencies": {
    "bourbon": "^4.3.4",
    "bourbon-neat": "^2.1.0",
    "browser-sync": "^2.18.13",
    "gulp": "^3.9.1",
    "gulp-plumber": "^1.1.0",
    "gulp-sass": "^3.1.0",
    "gulp-uglify": "^3.0.0"
  }

Gulpfile.js

// Looks insides node_modules for the following 
var gulp        = require('gulp');
var browserSync = require('browser-sync').create();
var sass        = require('gulp-sass');
var plumber     = require('gulp-plumber');
var uglify      = require('gulp-uglify');
var bourbon     = require('bourbon').includePaths;
var neat        = require('bourbon-neat').includePaths;

var paths = {
    scss: [
        "source/scss/*.scss"
    ]
};

// Kick off server and watch html/scss
gulp.task('build', ['sass'],function(){
      browserSync.init({
        server: "./public"
    });

    gulp.watch('source/scss/**/*.scss',['sass']);
    gulp.watch('public/*.html').on('change', browserSync.reload);
});

// Compile Sass
gulp.task('sass', function(){
    return gulp.src(paths.scss)
        .pipe(sass({
            includePaths: ["styles"].concat(bourbon)
        }))
    .pipe(plumber()) // Prevents Gulp from tripping up
    .pipe(gulp.dest('public/css')) // save output in public css folder
    .pipe(browserSync.stream());
});

// Task Method
gulp.task('default', ['build']);

【问题讨论】:

    标签: sass gulp bourbon node-sass


    【解决方案1】:

    这可能是软件包的错误。 node-neatnode-bourbon 不是官方包。尝试将它们换成 bourbonbourbon-neat

    您可能还想将整洁更新为2.1。没有任何重大更改,因此您应该没有任何问题。


    更新:
    此外,不需要在 sass importPaths 中添加波旁威士忌和纯咖啡,这可能是导致问题的原因。 Neat 的贡献页面与您尝试做的设置非常相似。查看https://github.com/thoughtbot/bitters/blob/master/Gulpfile.js,这是一个使用 Neat 和 bourbon 的正常运行的 gulpfile。

    根据您的示例,这里有两个例子来说明它是如何工作的。

    var bourbon    = require("bourbon").includePaths,
    autoprefix = require("gulp-autoprefixer"),
    connect    = require("gulp-connect"),
    gulp       = require("gulp"),
    sass       = require("gulp-sass");
    
    var paths = {
      scss: [
        "source/scss/*.scss"
      ]
    };
    
    gulp.task("sass", function () {
      return gulp.src(paths.scss)
        .pipe(sass({
          includePaths: ["styles"].concat(bourbon)
        }))
    // etc…
    

    更新 2:

    我创建并测试了一个正确使用 Gulp 运行波旁威士忌和整洁的存储库。

    https://github.com/thoughtbot/gulp-bourbon-neat-example

    原来的 guplfile 似乎没有正确添加 sass 的包含路径。 includepaths 应该是一个包含对波旁威士忌和整洁的直接引用的数组。

    它的gulpfile如下。

    var autoprefix = require("gulp-autoprefixer"),
        connect    = require("gulp-connect"),
        gulp       = require("gulp"),
        bourbon    = require("bourbon").includePaths,
        neat       = require("bourbon-neat").includePaths,
        sass       = require("gulp-sass");
    
    var paths = {
      scss: ["./source/assets/stylesheets/**/*.scss"]
    };
    
    gulp.task("sass", function () {
      return gulp.src(paths.scss)
        .pipe(sass({
            sourcemaps: true,
            includePaths: [bourbon, neat]
        }))
        .pipe(autoprefix("last 2 versions"))
        .pipe(gulp.dest("./source/assets/stylesheets"))
        .pipe(connect.reload());
    });
    
    gulp.task("connect", function() {
      connect.server({
        root: "source",
        port: 8000,
        livereload: true
      });
    });
    
    gulp.task("default", ["sass", "connect"], function() {
      gulp.watch(paths.scss, ["sass"]);
    });
    

    【讨论】:

    • 您为 bourbon-neat 推荐的最新版本是 here 是 1.9.0。也许我读错了?无论如何,我按照你建议的 node-neat 和 node-bourbon 为波旁整洁和波旁威士忌做了。导入时仍然遇到错误:(
    • @samsos 请参阅twitter.com/WHMII/status/885884355385712640 > NPM 显示“最新”,但它们真正的意思是“最新”。您可以使用npm view bourbon-neat versions查看所有可用版本
    • 我明白了。谢谢。我尝试了您的建议并进行了交换,但我仍然收到以下错误Error: File to import not found or unreadable: bourbon ...它让我发疯了哈哈
    • @samos 啊,找到了(我想)。您不需要在 sass includePaths 中包含波旁威士忌和整洁。更新原始答案。
    • includePaths 是一个需要添加的数组,多次定义它只会覆盖之前的条目。
    猜你喜欢
    • 2014-12-14
    • 2014-03-30
    • 2012-01-21
    • 2011-11-30
    • 2017-04-08
    • 2014-06-15
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多