打包項目的時候,css樣式丟失,為什么?怎么解決?


常見現象:明明開發環境顯示的好好地樣式,在生產環境就不生效了。

 

 運行npm run build后查看生成的dist文件夾,我們可以看到,dist文件夾下未生成css樣式文件。

 

 問題原因:

   在webpack官方文檔中介紹了tree shaking :

  

Tree shaking is a term commonly used in the JavaScript context for dead-code elimination.
It relies on the static structure of ES2015 module syntax, i.e. import and export 翻譯過來就是: 樹抖動是JavaScript上下文中常用於消除死代碼的術語。 它依賴於ES2015模塊語法的靜態結構,即導入和導出

  大致意思就是:webpack4中的tree shaking會默認移除javascript上下文中的未引用的代碼,用來達到減輕重量的思想,tree-shaking通過packge.json的‘sideEffects’屬性來判定哪個文件具有副作用。

 

  當"sideEffects":false時,項目中未被引用的文件會被移除判定均無副作用,就會把沒有被引用的代碼從環境中移除。

  這也是造成生產環境樣式丟失的的關鍵所在。

  (還有其他原因,有待后續補充)

 

如何解決?

  既然已知了問題所在,那我們把css文件添加到'sideEffects'數組中,就可以看到頁面樣式在生產環境中顯示了。

  

//package.json

//改前
"sideEffects":false;

//改后
"sideEffects":[*.css"]

 

然后再build一下,就能夠看到css文件被打包了並且被引用到我們生成的index頁面中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM