如何让 Sass Importer 将文件合并到一个样式表中? [复制]

Posted

技术标签:

【中文标题】如何让 Sass Importer 将文件合并到一个样式表中? [复制]【英文标题】:How do I make the Sass Importer combine files into one stylesheet? [duplicate] 【发布时间】:2015-11-09 09:08:56 【问题描述】:

我最近在名为 importer 的 node-sass 中发现了这个功能,它允许您在 sass 文件中处理与 @import 的任何相遇。

我想利用此功能轻松地从 npm 包中导入 .css 文件,类似于 Browserify。

这是我的 sass 文件。 (index.scss)

@import "normalize.css";

当我通过 Sass 和我的导入器运行这个文件时,它应该输出这个(假设 index.css):

/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */

/**
 * 1. Set default font family to sans-serif.
 * 2. Prevent ios and IE text size adjust after device orientation change,
 *    without disabling user zoom.
 */

html 
  ...   

相反,它会输出这个(实际的 index.css):

@import url(/Users/me/workspace/project/node_modules/normalize.css/normalize.css);

什么给了?为什么我的导入器只更改文件路径而不是taking the file and combining it with the original file?

这是我的导入器和运行 sass (gulpfile.babel.js) 的 gulp 任务:

import gulp from 'gulp';
import sass from 'gulp-sass';
import rename from 'gulp-rename';
import path from 'path';
import fs from 'fs';
let aliases = ;

function importNpmModule(url, file, done) 

  // check if the path was already found and cached
  if (aliases[url]) 
    return done( file: aliases[url] );
  

  // look for modules installed through npm
  try 
    const basePath = path.resolve('node_modules', url);
    const pkgInfo = path.join(basePath, 'package.json');
    const info = JSON.parse(fs.readFileSync(pkgInfo));
    const newPath = path.join(basePath, info.style);

    aliases[url] = newPath; // cache this request
    return done( file: newPath );
   catch(e) 

    // If module could not be found, return the original url
    aliases[url] = url;
    return done( file:url );
  


gulp.task('sassify', () => 
  return gulp.src('./index.scss')
    .pipe(sass( importer: inportNpmModule ))
    .pipe(rename('index.css'))
    .pipe(gulp.dest('public'));
);

编辑:我也尝试使用名为 sass-module-importer 的 npm 包,但它的问题与我完全相同。

【问题讨论】:

【参考方案1】:

这不是您的进口商问题。你有这个错误是因为在 Sass 导入中有.css。直接省略即可。

如果您在那之后遇到问题,您应该更新到最新版本的 node-sass 或使用一些技巧,例如 rename .css to .scss before compiling。

【讨论】:

以上是关于如何让 Sass Importer 将文件合并到一个样式表中? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

将所有 sass 文件合并到一个文件中

C#中如何将两个项目合并到一个项目中

EXCEL中如何将两列的内容合并到一列中?

js怎么把几张图片合并到一个.bin文件中

如何将多个excel表格的数据合并计算到一张表格中

Oracle如何将多次分组求和的数据合并到一张表上?