搜尋

首頁  >  問答  >  主體

VueJS/Tailwind CSS/VITE:使用環境變數作為 Tailwind 主題的顏色

<p>我有一個包含Vite、Tailwind CSS 和postcss 的VueJS 設定,並且想使用<code>.env.name</code> 檔案中的變數定義不同的顏色,以便我可以根據程式碼部署位置應用不同的顏色主題。 < /p> </p><p>我嘗試使用包含 <code>.env</code> 檔案</p> <pre class="brush:php;toolbar:false;">VITE_COLOR="FF0000"</pre> <p>並在 <code>tailwind.config.js</code> 中導入</p> <pre class="lang-js prettyprint-override"><code>... theme: { colors: { primary: import.meta.env.COLOR } } … </code></pre> <p>但是,我收到以下錯誤:</p> <blockquote> <p>語法錯誤:無法在模組外部使用“import.meta”</p> </blockquote> <p>我需要改變什麼才能使其正常工作,或者有更好的方法嗎? </p>
P粉174151913P粉174151913454 天前445

全部回覆(1)我來回復

  • P粉212114661

    P粉2121146612023-08-27 00:20:24

    Tailwind 設定是 CommonJS 檔案(不是模組),因此您無法使用 import 等 ES6 功能

    您可以安裝名為 dotenv

    的軟體包
    npm i dotenv
    

    需要將其放在 tailwind 設定檔之上,例如

    require('dotenv').config()
    
    module.exports = {/** */}
    

    .env中建立顏色變數。請注意,由於我們要求它超出了 Vite 的範圍,因此它可能不會帶有 VITE_

    # 前綴
    ANY_COLOR='#ffc8dd'

    現在您可以在 tailwind 配置中存取它

    theme: {
        colors: {
           primary: process.env.ANY_COLOR
        }
    }
    

    這將起作用但是如果您更改.env檔案中的顏色,則需要再次重建樣式。如果它適合你(一種部署 - 無論如何一種顏色) - 很好。我個人會建議另一個基於 CSS 變數的解決方案 - CanIUse 連結

    在CSS檔案中定義變數或在index.html中的#標籤內建立style標籤

    :root {
        --theme-color: #ffc8dd;
    }
    

    並在配置​​中

    theme: {
        colors: {
           primary: 'var(--theme-color)'
        }
    }
    

    就是這樣 - 沒有額外的包,額外的工作,如果您更改 CSS 變量,更改將即時應用 - 即使在生產中,因為我們使用 CSS 功能

    回覆
    0
  • 取消回覆