成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

你還在為Node-Sass煩惱嗎?快試試官方推薦的Dart-Sass

開發 開發工具
眾所周知,node-sass 是一個非常棒的工具,是前端工程師組織 CSS 的一個神兵利器。然而,用過的朋友都知道,node-sass 是讓人既愛又恨!你愛它,因為它賦能了 CSS 工程化;你恨它,因為有時候你搞不懂它為什么又出差錯了。

[[401961]]

本文轉載自微信公眾號「前端司南」,作者Tusi。轉載本文請聯系前端司南公眾號。

眾所周知,node-sass 是一個非常棒的工具,是前端工程師組織 CSS 的一個神兵利器。然而,用過的朋友都知道,node-sass 是讓人既愛又恨!你愛它,因為它賦能了 CSS 工程化;你恨它,因為有時候你搞不懂它為什么又出差錯了。我最近就在生產環境新踩了兩次 node-sass 的坑,這讓我下定決心放棄 node-sass。

什么是node-sass?

雖然 node-sass 是一個熟悉的老朋友了,但是還是有必要介紹一下。

Node-sass is a library that provides binding for Node.js to LibSass, the C++ version of the popular stylesheet preprocessor, Sass.

It allows you to natively compile .scss files to css at incredible speed and automatically via a connect middleware.

從上面的介紹可以知道,node-sass 是一個 nodejs 環境下提供的一個 Bridge,它提供了調用 LibSass 的能力(而 LibSass 是一個 C++ 實現的樣式預處理器)。

ps: 可以看到,node-sass 并不完全是 javascript 實現的,而是借助了 C++ 的能力,畢竟編譯型語言還是速度快啊。

Round1:安裝 node-sass

剛進入前端領域的朋友,可能都問過這么一個問題:為什么我的 node-sass安裝失敗了?

在網上搜索這個問題,你會找到答案,其中一個是使用 cnpm,但我用過感覺怪怪的,最早是使用 Angular4 時,執行ng eject發生了很多錯誤。

后面就一直用的設置 npm 淘寶鏡像源的方式處理這個問題,同時這也是解決npm install下載卡頓或失敗的一個技巧,畢竟有些包被墻了。

npm config set registry https://registry.npm.taobao.org

但解決了這個問題,也不是說就萬事大吉了...

Round2:node-sass和node版本不兼容

一般來說,個人電腦的 NodeJS 環境安裝好了后,很久都不會想著去升級。

不過我前段時間去研究 Vite 的時候,發現我的 NodeJS 版本已經不滿足條件了。

Compatibility Note

Vite requires Node.js version >=12.0.0.

于是乎,我就升級了 NodeJS 版本。

但是,當我運行一些舊項目的時候,我發現,項目報錯了。

  1. Module build failed (from ./node_modules/sass-loader/dist/cjs.js): 
  2. Error: Node Sass does not yet support your current environment: Windows 64-bit with Unsupported runtime (83) 
  3. For more information on which environments are supported please see: 
  4. https://github.com/sass/node-sass/releases/tag/v4.13.0 

粗略一看,報錯信息說的是 NodeSass 不支持當前運行時環境,我猜這肯定是跟 NodeJS 版本不匹配了。我首先檢查了下我的 NodeJS 版本。

  1. nove -v 
  2.  
  3. v14.16.0 

嗯,是新版本沒錯了。

于是就去 github 上查了下 node-sass,發現確實還是這么一回事,node-sass@4.13.0 版本真的不支持 node@14,慘!

其實,我只要把 NodeJS 版本降低到 13,問題也能得以解決。

但我覺得這還是有問題的。新項目要求高版本 NodeJS,而舊項目需要低版本 NodeJS,我本地只有一套 Node 環境,這樣就出現了矛盾點,看來開發環境也比較需要容器化。

經大佬提醒,還有 nvm 可以管理 node 版本。

雖然這個問題也不能完全算是 node-sass 的鍋,但誰叫它不支持 node@14 呢?用著還是不爽!

Round3:node-sass: Command failed

這是我上個月在生產環境跑 CI/CD 時遇到的一個問題。

  1. error /builds/coollu-r-d/coollu-fe/xkgj_web/node_modules/node-sass: Command failed. 

后面還跟了一堆錯誤信息。

即便我已經是在 Docker 容器里執行 build 任務了,也就是說沒有上面那個和 Node 版本不兼容的問題,但還是遇到了一次又一次的報錯,這誰能頂得住呢?

使用Dart Sass

Dart Sass 是 Sass 官網力推的工具,它包括了基于 Dart VM 的命令行工具,以及基于 Node 的純 Javascript 實現。前者說的 Dart VM 就是現在很火的 Flutter 選擇的編程語言 Dart 的虛擬機;而后者的出現是為了能快速與 Node 環境下現有的工作流集成,比如 webpack,gulp等。Dart Sass的命令行工具是比 Javascript Library性能更好的,但是為了快速對接 webpack 等工具,我們目前一般通過npm install --save-dev sass直接使用 sass 的 Javascript Library。

改用 Dart Sass 后,不管是安裝還是兼容高版本 Node 這塊,都沒有什么問題,總的來說,使用體驗還是非常棒!

Dart Sass 是我們對它的習慣稱呼,最早它在 npm 上的確是以 dart-sass 的名字發布的,不過現在它已經更名為 sass 了。

換Dart Sass后,我要做些什么

眾所周知,在 Vue 項目中,scoped 樣式是會通過一個哈希化的屬性選擇器進行隔離的(比如[data-v-67c6b990]),如果希望做樣式穿透,在Vue@2中會用到/deep/深度選擇器。

注意,/deep/本身是作為一個 CSS 的提案(好像是用于解決 web components 的樣式穿透問題,用 Angular 的時候簡單了解過),后面又被廢棄了,而 Vue 的 /deep/跟 CSS 的/deep/不是同一個概念!考慮到用戶容易誤解 Vue 的/deep/和 CSS 被廢棄的/deep/提案是一個東西,也就會誤認為 /deep/是一個不可用的特性,Vue 也出了 RFC 針對這塊做調整,后面也就有了::v-deep。

使用 Dart Sass 后,可能會在運行開發環境時遇到不支持/deep/的問題,需要改用::v-deep,簡寫就是:deep(selector),比如:

  1. :deep(.foo) { 
  2.   position: relative

 

責任編輯:武曉燕 來源: 前端司南
相關推薦

2022-01-12 14:05:58

Sass代編譯器 css

2020-10-28 07:03:11

NodeSassDart Sass

2018-09-04 05:05:29

2010-06-24 09:38:42

Windows備份云平臺

2014-08-28 09:55:19

中文郵箱郵箱賬號

2023-11-02 08:46:19

微服務開發Istio

2020-01-20 14:30:39

HTTP概念標頭

2023-06-25 09:51:03

ChatGPT平臺

2015-12-29 13:53:14

BeeCloud云計算支付

2022-02-24 07:03:13

JavaScrip語言

2018-09-24 09:15:12

數據倉庫大數據

2020-07-24 20:57:33

MySQL數據量數據庫

2013-02-18 13:44:22

CSSSASSWeb

2022-04-13 09:01:45

SASSCSS處理器

2015-07-09 11:32:26

AWSIaaS云計算

2023-11-02 08:00:53

項目版本滑動

2024-03-21 08:55:41

享元模式對象內存

2024-04-23 10:29:44

SassCSS前端

2025-03-04 07:30:00

開發前端Node.js

2023-11-15 11:34:03

SassBootstrap
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久免费电影 | 久久精品久久久久久 | 国产精品美女久久久久aⅴ国产馆 | 中文字幕免费在线观看 | 成人免费视频网站在线看 | 国产美女黄色片 | 午夜精品一区二区三区在线视 | 久久久久国色av免费观看性色 | 成人午夜视频在线观看 | 亚洲a一区二区 | 丁香久久 | 九九热在线精品视频 | 精品在线一区 | 欧美理伦片在线播放 | 玩丰满女领导对白露脸hd | 91福利网 | 国产偷录视频叫床高潮对白 | 精品亚洲永久免费精品 | 日韩精品 电影一区 亚洲 | caoporn视频在线 | 久久成人国产 | 国产高清在线精品 | 久久久久中文字幕 | 亚洲性爰 | 成人做爰999 | 国产精品久久九九 | 澳门永久av免费网站 | 中文精品一区二区 | 玖玖在线免费视频 | 国产国语精品 | 日本精品裸体写真集在线观看 | 99在线播放| 狠狠干天天干 | 狠狠干狠狠操 | 欧美女优在线观看 | sese视频在线观看 | 欧美午夜影院 | 91久久精品国产 | 国产精品无 | 日本色综合 | 亚洲视频免费播放 |