นำเข้าไฟล์ CSS ปกติในไฟล์ SCSS หรือไม่


509

อย่างไรก็ตามมีการนำเข้าไฟล์ CSS ปกติด้วย@importคำสั่งของ Sass หรือไม่? ในขณะที่ฉันไม่ได้ใช้ไวยากรณ์ SCSS ทั้งหมดจาก sass ฉันยังคงสนุกกับการรวม / บีบอัดคุณสมบัติและต้องการใช้โดยไม่ต้องเปลี่ยนชื่อไฟล์ทั้งหมดเป็น * .scss


1
ใช่มีวิธี: เพียงลบส่วนขยาย '.css' ในเส้นทางไฟล์ css ในคำสั่ง @input :) (ใช้ได้กับรุ่น sass> = 3.2)
Kamil Kiełczewski

ตั้งแต่ปี 2018 การใช้SASS@importในไฟล์ CSS ปกติควรสร้างCSS @importปกติ นั่นหมายถึงคำขอ HTTP อีกหนึ่งรายการและไม่มีการรวมหรือบีบอัด หากการใช้งานบางอย่างทำงานแตกต่างกันฉันจะบอกว่ามันเป็นคุณสมบัติที่ไม่ได้มาตรฐานที่แตกต่างจากสเป็คภาษา
ÁlvaroGonzález

คำตอบ:


215

ดูเหมือนว่านี่จะไม่ถูกนำไปใช้งานจริง ณ เวลาที่เขียนนี้:

https://github.com/sass/sass/issues/193

สำหรับ libsass (การใช้งาน C / C ++) การนำเข้าจะทำงาน*.cssในลักษณะเดียวกับ*.scssไฟล์ - เพียงแค่ละเว้นส่วนขยาย:

@import "path/to/file";

สิ่งนี้จะนำเข้า path/to/file.cssนี้จะนำเข้า

ดูคำตอบนี้สำหรับรายละเอียดเพิ่มเติม

ดูคำตอบนี้สำหรับการใช้ทับทิม (sass gem)


23
@kleinfreund ไม่เป็นความจริงกับ Sass 3.3.1 @importคำสั่งจะไม่เปลี่ยนแปลงที่ทุกคนและปรากฏในไฟล์ CSS ที่เกิด Sass ไม่รวมไฟล์ CSS อ้างอิงเช่น @GSto จะขอ ดูเหมือนว่ามันจะดำเนินการใน Sass 3.4 หรือ 4.0
fregante

1
หากคุณกำลังใช้อึกหรือฮึดฮัดเพียงแค่ใช้เครื่องมือที่แตกต่างกันเพื่อนำเข้าไฟล์ CSS ของคุณได้ง่ายขึ้นและทำงานได้ในขณะนี้ ฉันใช้gulp-import-cssฉันไม่แน่ใจว่า Grunt เทียบเท่าอะไร
Fregante

3
มันใช้ได้กับlibsassอย่างน้อย ดูคำตอบstackoverflow.com/questions/7111610/ …และ PR github.com/sass/libsass/pull/754
ivn

"การนำเข้าใช้งานได้*.cssในลักษณะเดียวกับ*.cssไฟล์"เป็นคำพูดซ้ำซาก คุณหมายถึงหนึ่งในนั้นที่จะ*.scssใช่มั้ย
underscore_d

1
เริ่มต้นใน v3.5.3, libsass เตือนว่านี่เป็นพฤติกรรมที่ไม่ได้มาตรฐานและไม่ควรเชื่อถือ (แทน "ใช้ผู้นำเข้าแบบกำหนดเองเพื่อรักษาพฤติกรรมนี้") github.com/sass/libsass/releases/tag/3.5.3
iX3

383

หลังจากมีปัญหาเดียวกันฉันก็สับสนกับคำตอบทั้งหมดที่นี่และความคิดเห็นเกี่ยวกับพื้นที่เก็บข้อมูลของ sass ใน GitHub

ฉันแค่ต้องการชี้ให้เห็นว่าในเดือนธันวาคม 2014 ปัญหานี้ได้รับการแก้ไขแล้ว ตอนนี้เป็นไปได้ที่จะนำเข้าcssไฟล์ลงในไฟล์ sass ของคุณโดยตรง PRต่อไปนี้ใน github ช่วยแก้ปัญหา

ไวยากรณ์เหมือนกันในตอนนี้ - @import "your/path/to/the/file"โดยไม่มีนามสกุลหลังจากชื่อไฟล์ สิ่งนี้จะนำเข้าไฟล์ของคุณโดยตรง หากคุณต่อ*.cssท้ายมันจะแปลเป็นcssกฎ@import url(...)กฎ

ในกรณีที่คุณกำลังใช้บางส่วนของ "แฟนซี" bundlers โมดูลใหม่ ๆ เช่นwebpackคุณอาจจะต้องใช้การใช้งาน~ในการเริ่มต้นของเส้นทาง ดังนั้นหากคุณต้องการนำเข้าพา ธ ต่อไปนี้node_modules/bootstrap/src/core.scssคุณจะต้องเขียนบางอย่างเช่น
@import "~bootstrap/src/core"คุณจะเขียนสิ่งที่ต้องการ

หมายเหตุ:
ดูเหมือนว่านี่จะไม่ทำงานสำหรับทุกคน หากล่ามของคุณจะขึ้นอยู่กับlibsassว่ามันควรจะทำงานดี (ชำระเงินนี้ ) ฉันทดสอบโดยใช้@importกับ node-sass และมันใช้งานได้ดี น่าเสียดายที่นี่ใช้งานได้และไม่สามารถใช้งานได้ในบางกรณีทับทิม


1
สิ่งนี้ดูเหมือนว่าจะถูกนำมาใช้libsassแต่เมื่อใช้ ruby ​​Implementation ของ sass ดูเหมือนว่าไวยากรณ์นี้ใช้งานได้ แต่ถ้าคุณsass-css-importerต้องการ อย่างน้อยนั่นคือสิ่งที่ฉันเห็น มีใครยืนยันได้ไหม
bsara

5
คุณแน่ใจว่าคุณมี sass เวอร์ชันล่าสุดหรือไม่ ฉันได้ใช้รูปแบบนี้ในขณะที่และมันทำงานได้ดีกับทั้งสองrubyและnodejsล่าม คุณได้ตรวจสอบว่าคุณไม่ได้ใส่นามสกุลหรือไม่? ไวยากรณ์ที่ถูกต้องคือ@import "path/to/style/file(โดยไม่มี.cssนามสกุล)
tftd

4
ฉันใช้ ruby ​​sass v3.4.18 (กับ Jekyll) ตาม Gemfile.lock ของฉัน Error: File to import not found or unreadable: cssdep/cssfileยังคงเห็น ถ้าฉันสร้างcssdep/cssfile.scssมันก็ใช้งานได้ทันที ดังนั้นไม่ใช่ปัญหาเกี่ยวกับเส้นทางด้วยเหตุผลบางอย่างฉันยังไม่สามารถรวมไฟล์ '.css' จาก SASS :(
thom_nic

1
ruby -v: ruby 2.2.2p95 (2015-04-13 revision 50295) [x64-mingw32] sass -v: Sass 3.4.17 (Selective Steve)ไม่ได้ทำงานที่นี่
Cyril Chapon

5
ขอบคุณสำหรับสิ่งนี้! ฉันสามารถนำเข้า normalize.css โดยใช้ node-sass ด้วย@import "node_modules/normalize.css/normalize";
Nick

260

คุณต้อง prepend ขีดไปยังไฟล์ CSS ที่จะรวมและสลับการขยายการ SCSS (เช่น: _yourfile.scss) จากนั้นคุณต้องเรียกมันด้วยวิธีนี้:

@import "yourfile";

และจะรวมเนื้อหาของไฟล์แทนการใช้ CSS @import directive มาตรฐาน


1
อาจเป็นเรื่องเกี่ยวกับการประชุมและมาตรฐาน
David Morales

70
ขีดล่างคือการป้องกันไม่ให้รวบรวมเป็นไฟล์แยก
โยนาห์

4
ในกรณีที่ทุกคนสงสัยว่าสิ่งนี้จะทำงานได้เพราะไวยากรณ์ของ Sass 'SCSS เป็นชุดของ CSS3 นั่นเป็นเหตุผลที่จำเป็นต้องใช้เครื่องหมายอัฒภาค
Jacob Wan

46
คุณไม่สามารถเปลี่ยนนามสกุลของไฟล์ CSS ผู้ขายบางส่วนได้
Slava Fomin II

7
หากอยู่บนคอมพิวเตอร์ / เซิร์ฟเวอร์ของคุณคุณสามารถทำได้! และยังมีลิงก์สัญลักษณ์หากคุณไม่ต้องการ
ste

260

สิ่งนี้ถูกนำไปใช้และผสานเริ่มตั้งแต่เวอร์ชัน3.2( ดึง # 754รวมกับ2 มกราคม 2558สำหรับlibsassปัญหาต้นฉบับถูกกำหนดที่นี่: sass# 193 # 556 , libsass# 318 )

หากต้องการตัดเรื่องสั้นที่มีความยาวให้ใช้ไวยากรณ์ในหัวข้อถัดไป:

  1. เพื่อนำเข้า (รวม) ไฟล์ CSS ดิบ

    ไวยากรณ์ไม่มี.cssส่วนท้าย (ผลลัพธ์ในการอ่านจริงของบางส่วนs[ac]ss|cssและรวมเป็นแบบอินไลน์ไปยัง SCSS / SASS):

    @import "path/to/file";

  2. เพื่อนำเข้าไฟล์ CSS ในแบบดั้งเดิม

    ไวยากรณ์เป็นไปในลักษณะดั้งเดิมโดยมี.cssส่วนขยายที่ส่วนท้าย (ผลลัพธ์เป็น@import url("path/to/file.css");CSS ที่รวบรวมของคุณ):

    @import "path/to/file.css";

และมันก็เป็นเรื่องที่ดีมาก: ไวยากรณ์นี้มีความหรูหราและพูดน้อยรวมถึงเข้ากันได้ย้อนหลัง! มันทำงานได้ดีกับlibsassและnode-sassและ

__

เพื่อหลีกเลี่ยงการคาดเดาต่อไปในความคิดเห็นเขียนนี้อย่างชัดเจน: ทับทิมตามSassยังคงมีคุณลักษณะนี้unimplementedหลังจาก 7 ปีของการอภิปราย เมื่อถึงเวลาของการเขียนคำตอบนี้ก็สัญญาว่าใน 4.0 @useจะมีวิธีง่ายๆในการบรรลุเป้าหมายนี้อาจจะด้วยความช่วยเหลือของ ดูเหมือนว่าจะมีการดำเนินการในไม่ช้าแท็ก"การวางแผน" "การยอมรับข้อเสนอ" ที่ได้รับมอบหมายใหม่ได้ถูกกำหนดไว้สำหรับปัญหา # 556และ@useคุณลักษณะใหม่

คำตอบอาจจะมีการอัปเดตเร็วที่สุดเท่าที่มีการเปลี่ยนแปลงบางสิ่งบางอย่าง


3
เพียงชี้แจง, นำเข้า CSS เป็น sass ทำงานเช่นนี้สำหรับฉัน: @import url ("เส้นทาง / ไปยัง / ไฟล์โดยไม่ต้อง -ssss- นามสกุล");
Craig Wayne

1
วิธีนี้ใช้ไม่ได้กับ sass เวอร์ชัน ruby ตัวอย่างเช่นคำสั่ง: sass myFile.scss: output.css ล้มเหลวด้วยการนำเข้า css แต่ทำงานได้เมื่อคุณเปลี่ยนนามสกุลของไฟล์. css เป็น. scss ทำงานกับเวอร์ชั่นล่าสุดตามที่เขียนความคิดเห็นนี้: 3.4.22 / Selective Steve นอกจากนี้ยังส่งผลต่อนักวิ่งงานที่ใช้รุ่นทับทิมเช่น grunt-contrib-sass
ansorensen

@ansorensen ฉันคิดว่ามีความสับสนจากด้านข้างของคุณ คุณหมายถึงอะไรโดย"ผลงานเมื่อคุณเปลี่ยนนามสกุลไฟล์ .css ที่จะ .scss" ? แนวคิดทั้งหมดเกี่ยวกับไฟล์ CSSปกติและการทำงานกับมันสองวิธี (อย่าสับสนกับการนำเข้า SCSS) โปรดอ่านคำถามและคำตอบอีกครั้ง
Farside

@Farside ไม่มีความสับสน ไวยากรณ์การนำเข้า 'path / to / file' ไม่ทำงานใน sass gem รุ่นล่าสุดใน Ruby เมื่อฉันรัน sass ด้วยการนำเข้าการนำเข้าจะทำงานสำเร็จเมื่อไฟล์ที่พา ธ ที่นำเข้ามีนามสกุล. scss และล้มเหลวเมื่อไฟล์มี. css คำถามจะถามการนำเข้า css ไปยัง scss และคุณให้คำตอบสำหรับ lib-sass & node-sass ฉันให้ความเห็นว่าฟังก์ชั่นนี้ไม่ได้อยู่ใน sass เวอร์ชันทับทิม
ansorensen

1
@ansorensen, omg, ข้อความมากมายจากคุณ ... ฉันชัดเจนและไม่สับสนใคร Node-sassเป็นไลบรารี Node.js LibSass ( เวอร์ชัน Cของ Sass) ไม่ได้กล่าวถึงเดียวที่libsassหรือnode-sassเป็นทับทิมใช้ไม่ได้กล่าวถึงเดียวกับรุ่น RUBY เฉพาะในคำถามเดิม โปรดอ่านอย่างละเอียดก่อนเขียน 3 ความคิดเห็นในแถวถัดไป ฉันมีการอ้างอิงทั้งหมด: ตามปัญหา # 193มันยังไม่ถูกนำมาใช้หลังจากการอภิปราย 5 ปีสำหรับรุ่น Ruby พวกเขาสัญญาว่าจะใช้งานได้เฉพาะเมื่อver 4.0จะสามารถใช้ได้
Farside

37

ข่าวดีสำหรับทุกคน Chris Eppstein สร้างปลั๊กอินเข็มทิศพร้อมฟังก์ชั่นการนำเข้าแบบอินไลน์ css:

https://github.com/chriseppstein/sass-css-importer

ตอนนี้การนำเข้าไฟล์ CSS นั้นง่ายเหมือน:

@import "CSS:library/some_css_file"

3
ล้มเหลวเนื่องจากการใช้จุดเริ่มต้นที่เลิกใช้แล้ว "คืออะไร แต่ไม่มีทางเป็นไปได้ ... " ฉันแน่ใจว่ามันยอดเยี่ยมเมื่อออกมาครั้งแรก แต่มันต้องการการอัพเดทเพื่อให้สามารถใช้งานได้อีกครั้งหรือคุณจะต้องติดตั้งปลั๊กอินที่ไม่รองรับ ขอบคุณC§
CSS

18

หากคุณมี.cssไฟล์ที่คุณไม่ต้องการที่จะปรับเปลี่ยนไม่เปลี่ยนนามสกุลเพื่อ.scss( เช่นไฟล์นี้มาจากโครงการคดเคี้ยวคุณไม่รักษา ) คุณก็สามารถสร้าง symlink และจากนั้นจึงนำ.scssเข้าของคุณ

สร้าง symlink:

ln -s path/to/css/file.css path/to/sass/files/_file.scss


อิมพอร์ตไฟล์ symlink ไปยังเป้าหมาย.scss:

@import "path/to/sass/files/file";


.cssไฟล์เอาต์พุตเป้าหมายของคุณกำลังเก็บเนื้อหาจาก.scssไฟล์symlink ที่นำเข้าไม่ใช่กฎการนำเข้า CSS ( กล่าวถึงโดย @yaz ที่มีคะแนนความคิดเห็นสูงสุด ) และคุณไม่มีไฟล์ซ้ำที่มีนามสกุลต่างกันการอัพเดทใด ๆ ที่ทำใน.cssไฟล์เริ่มต้นจะถูกนำเข้าสู่ผลลัพธ์เป้าหมายทันที

ลิงก์สัญลักษณ์ (เช่น symlink หรือ soft link) เป็นไฟล์ชนิดพิเศษที่มีการอ้างอิงไปยังไฟล์อื่นในรูปแบบของพา ธ สัมบูรณ์หรือสัมพัทธ์และที่มีผลต่อการจำแนกชื่อพา ธ
- http://en.wikipedia.org/wiki/Symbolic_link


9
เพิ่ม symlink ไม่ได้เป็นวิธีการแก้ปัญหาแบบพกพามาก (เช่นนักพัฒนาหลายคนหรือระบบสร้าง)
LocalPCGuy

@LocalPC ซื้อมันคือเมื่อทุกไฟล์ ( .cssและสร้าง symlink) พร้อมให้ทุกคนผ่านที่เก็บที่ใช้ร่วมกันตัวอย่างเช่น
Nik Sumeiko

ฉันเพิ่งทำสิ่งนี้และได้รับคำตอบเกี่ยวกับลิงก์ sym ในหัวข้อนี้ แต่ดีใจที่มีอยู่แล้วที่นี่! มันเป็นความจริงที่ความต้องการนี้หายาก แต่สถานการณ์ของฉันเกี่ยวข้องไม่ต้องการแก้ไขไฟล์ CSS เลย (เพราะเป็นไฟล์ bower) ดังนั้นการสร้าง symlink และการนำเข้าที่ทำงานได้อย่างสมบูรณ์
Aaron Krauss

2
สำหรับผู้ใช้Windowsฟังก์ชั่นเดียวกันจะมีรูปแบบที่แตกต่างกันmklink /H <link> <target>และเรียกว่าhard link @mrsafraz
Farside

5

คุณสามารถใช้บุคคลที่สามในimporterการปรับแต่ง@importซีแมนทิกส์

node-sass-import-oneซึ่งทำงานกับnode-sass (สำหรับ Node.js) สามารถนำเข้าไฟล์ CSS แบบอินไลน์

ตัวอย่างการใช้งานโดยตรง:

var sass = require('node-sass');,
    importOnce = require('node-sass-import-once');

sass.render({
  file: "input.scss",
  importer: importOnce,
  importOnce: {
    css: true,
  }
});

ตัวอย่างการกำหนดค่าgrunt-sass :

var importOnce = require("node-sass-import-once");
grunt.loadNpmTasks("grunt-sass");

grunt.initConfig({
  sass: {
    options: {
      sourceMap: true,
      importer: importOnce
    },
    dev: {
      files: {
        "dist/style.css": "scss/**/*.scss"
      }
    }
  });

โปรดทราบว่า node-sass-import-one ไม่สามารถนำเข้าส่วนของ Sass ได้โดยไม่ต้องขีดเส้นใต้ชัดเจน ตัวอย่างเช่นกับไฟล์partials/_partial.scss:

  • @import partials/_partial.scss ประสบความสำเร็จ
  • @import * partials/partial.scss ล้มเหลว

โดยทั่วไปจะทราบว่าเป็นผู้นำเข้าที่กำหนดเองสามารถเปลี่ยนใด ๆความหมายนำเข้า อ่านเอกสารก่อนเริ่มใช้งาน


4

หากฉันถูกต้อง css เข้ากันได้กับ scss เพื่อให้คุณสามารถเปลี่ยนส่วนขยายของ css เป็น scss และควรทำงานต่อไป เมื่อคุณเปลี่ยนส่วนขยายแล้วคุณสามารถนำเข้าส่วนขยายนั้นและจะรวมอยู่ในไฟล์

หากคุณไม่ทำ sass นั้นจะใช้ css @import ซึ่งเป็นสิ่งที่คุณไม่ต้องการ


16
โชคไม่ดีที่บางครั้งไฟล์ css ที่นำเข้านั้นอยู่นอกเหนือการควบคุมของคุณเช่นเดียวกับในไลบรารีซึ่งจัดทำแพ็กเกจสินทรัพย์สแตติก
Eric Drechsel

2

ฉันค้นพบวิธีที่หรูหราราวกับ Rails ที่จะทำ ก่อนอื่นให้เปลี่ยนชื่อ.scssไฟล์ของคุณเป็น.scss.erbจากนั้นใช้ไวยากรณ์เช่นนี้ (ตัวอย่างสำหรับเนื้อหา CSS อัญมณี highlight_js-rails4 ):

@import "<%= asset_path("highlight_js/github") %>";

ทำไมคุณไม่สามารถโฮสต์ไฟล์โดยตรงผ่าน SCSS :

การดำเนินการ@importใน SCSS นั้นทำงานได้ดีสำหรับไฟล์ CSS ตราบใดที่คุณใช้เส้นทางแบบเต็มไม่ทางใดก็ทางหนึ่ง ในโหมดการพัฒนาrails sให้บริการสินทรัพย์โดยไม่ต้องรวบรวมดังนั้นเส้นทางเช่นนี้ทำงาน ...

@import "highlight_js/github.css";

... /assets/highlight_js/github.cssเพราะเส้นทางที่เจ้าภาพเป็นตัวอักษร หากคุณคลิกขวาที่หน้าและ "ดูแหล่งที่มา" จากนั้นคลิกที่ลิงค์สำหรับสไตล์ชีทที่มีด้านบน@importคุณจะเห็นบรรทัดที่มีลักษณะดังนี้:

@import url(highlight_js/github.css);

เครื่องยนต์ SCSS แปลไป"highlight_js/github.css" url(highlight_js/github.css)สิ่งนี้จะทำงานได้จนกว่าคุณจะตัดสินใจลองใช้งานในการผลิตโดยที่สินทรัพย์ถูกคอมไพล์ไว้ล่วงหน้ามีแฮชแทรกลงในชื่อไฟล์ ไฟล์ SCSS จะยังคงเป็นสแตติก/assets/highlight_js/github.cssที่ไม่ได้ทำการคอมไพล์ล่วงหน้าและไม่มีอยู่ในการผลิต

โซลูชันนี้ทำงานอย่างไร:

ประการแรกด้วยการย้าย.scssไฟล์ไปที่.scss.erbเราได้เปลี่ยน SCSS เป็นเทมเพลตสำหรับ Rails อย่างมีประสิทธิภาพ ตอนนี้เมื่อใดก็ตามที่เราใช้<%= ... %>เทมเพลตแท็กตัวประมวลผลเทมเพลต Rails จะแทนที่ตัวอย่างเหล่านี้ด้วยผลลัพธ์ของรหัส (เช่นเดียวกับเทมเพลตอื่น ๆ )

การระบุasset_path("highlight_js/github")ใน.scss.erbไฟล์ทำสองสิ่ง:

  1. ทริกเกอร์rake assets:precompileงานเพื่อคอมไพล์ไฟล์ CSS ที่เหมาะสม
  2. สร้าง URL ที่สะท้อนสินทรัพย์อย่างเหมาะสมโดยไม่คำนึงถึงสภาพแวดล้อมของ Rails

นี่ก็หมายความว่าเอ็นจิน SCSS ไม่ได้แยกไฟล์ CSS ด้วย มันเป็นเพียงการโฮสต์ลิงก์ไปยังมัน! ดังนั้นจึงไม่มีแพทช์ลิง hokey หรือวิธีแก้ปัญหาขั้นต้น เราให้บริการเนื้อหา CSS ผ่าน SCSS ตามที่ตั้งใจไว้และใช้ URL เพื่อบอกเนื้อหา CSS ว่าเป็น Rails ไว้ หวาน!


สำหรับฉันแล้วดูเหมือนว่าวิธีแก้ปัญหาจะค่อนข้างร่มรื่นและฟังดูเหมือนแฮ็ค แต่มันเป็นงานที่ดีในการสืบสวน!
Farside

0

วิธีแก้ปัญหาง่าย ๆ :

ไฟล์ css ทั้งหมดหรือเกือบทั้งหมดสามารถตีความได้เช่นกันว่าเป็นไฟล์ scss นอกจากนี้ยังช่วยให้สามารถนำเข้าไว้ในบล็อก เปลี่ยนชื่อ css เป็น scss และนำเข้ามัน

ในการกำหนดค่าจริงของฉันฉันทำต่อไปนี้:

ก่อนอื่นฉันจะคัดลอกไฟล์. css ไปที่ไฟล์ชั่วคราวคราวนี้มาพร้อมกับนามสกุล. ตัวอย่างการกำหนดค่า Grunt:

copy: {
    dev: {
        files: [
            {
                src: "node_modules/some_module/some_precompiled.css",
                dest: "target/resources/some_module_styles.scss"
            }
        ]
    }
}

จากนั้นคุณสามารถนำเข้าไฟล์. scss จาก scss หลักของคุณ (ในตัวอย่างของฉันมันจะถูกนำเข้าไปยังบล็อก):

my-selector {
  @import "target/resources/some_module_styles.scss";
  ...other rules...
}

หมายเหตุ: สิ่งนี้อาจเป็นอันตรายได้เนื่องจากจะส่งผลอย่างมีประสิทธิภาพว่า css จะถูกแยกวิเคราะห์หลายครั้ง ตรวจสอบ css ดั้งเดิมของคุณว่ามีสิ่งประดิษฐ์ใด ๆ ที่สามารถตีความได้ของ scss (เป็นไปไม่ได้ แต่ถ้ามันเกิดขึ้นผลลัพธ์จะยากต่อการดีบักและอันตราย)


-3

ตอนนี้มันเป็นไปได้โดยใช้:

@import 'CSS:directory/filename.css';

3
เฉพาะในกรณีที่sass-css-importerติดตั้งอัญมณีsass จะถูกเรียกด้วยสวิตช์-r sass-css-importerและ.cssถูกตัดออกจากเส้นทางไฟล์
Bernhard Döbler

-4

ฉันสามารถยืนยันงานนี้:

class CSSImporter < Sass::Importers::Filesystem
  def extensions
    super.merge('css' => :scss)
  end
end

view_context = ActionView::Base.new
css = Sass::Engine.new(
  template,
  syntax:     :scss,
  cache:      false,
  load_paths: Rails.application.assets.paths,
  read_cache: false,
  filesystem_importer: CSSImporter # Relevant option,

  sprockets:  {
    context:     view_context,
    environment: Rails.application.assets
  }
).render

ให้เครดิตกับ Chriss Epstein: https://github.com/sass/sass/issues/193


1
คุณสามารถใช้สิ่งนี้ในไฟล์ scss ของคุณได้อย่างไร?
Adrian Ber

-10

ง่าย

@import "path / to / file.css";


6
ฉันได้ลองแล้ว แต่มันจะไม่ดึงเนื้อหาของไฟล์ลงไปในไฟล์นั้นเมื่อทำการบีบอัดมันจะเก็บ @import line เอาไว้
GSto

1
คำตอบที่ได้คะแนนต่ำสุด แต่ก็น่าจะเป็นวิธีที่ถูกต้องในตอนนี้ การใส่คำต่อท้ายเป็นสิ่งที่ถูกต้อง
Wyck
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.