1. 程式人生 > >在create-react-app腳手架工具中增加less支援

在create-react-app腳手架工具中增加less支援

  • create-react-app是FaceBook官方出品的一個React.js腳手架工具,集成了webpack等除錯和打包工具,具體可以檢視Github:https://github.com/facebookincubator/create-react-app


    其預設支援css的import,但是不支援less,本文介紹如何簡單的增加less的支援。


    在create-react-app生成的專案資料夾中,是看不到webpack.config相關的檔案的,而要增加less支援肯定是要更改webpack配置檔案的,所以需要讓這些檔案暴露出來,使用以下命令即可:


    npm run eject 

    之後便可以在專案目錄下看到config資料夾,其中的webpack.config.dev.js和webpack.config.prod.js分別是開發環境和生產環境使用的webpack配置檔案。


    安裝less-loader:


    npm install less-loader less --save-dev 

    修改開發環境配置,編輯webpack.config.dev.js檔案,需要改兩個地方。


    第一個地方:找到以下幾行(版本不同位置可能不太一樣)


    exclude: [ 
    //.html$/, 
    //.(js|jsx)$/, 
    //.css$/, 
    //.json$/, 
    //.bmp$/, 
    //.gif$/, 
    //.jpe?g$/, 
    //.png$/, 
    ], 

    將其中的.css改為.(css|less),內容變為:


    exclude: [ 
    //.html$/, 
    //.(js|jsx)$/, 
    //.(css|less)$/, 
    //.json$/, 
    //.bmp$/, 
    //.gif$/, 
    //.jpe?g$/, 

    //.png$/, 
    ], 


    第二個地方:找到test: //.css$/



    更改為test: //.(css|less)$/


    並在下面的use數組裡面增加less-loader



    loader: require.resolve('less-loader') // compiles Less to CSS 

    更改完以後這部分程式碼大概長這個 樣子:



    test: //.(css|less)$/, 
    use: [ 
    require.resolve('style-loader'), 

    loader: require.resolve('css-loader'), 
    options: { 
    importLoaders: 1, 
    }, 
    }, 

    loader: require.resolve('postcss-loader'), 
    options: { 
    ident: 'postcss', // https://webpack.js.org/guides/migrating/#complex-options 
    plugins: () => [ 
    require('postcss-flexbugs-fixes'), 
    autoprefixer({ 
    browsers: [ 
    '>1%', 
    'last 4 versions', 
    'Firefox ESR', 
    'not ie < 9', // React doesn't support IE8 anyway 
    ], 
    flexbox: 'no-2009', 
    }), 
    ], 
    }, 
    }, 

    loader: require.resolve('less-loader') // compiles Less to CSS 

    ], 
    }, 

    生產環境的配置也是類似上面的方法修改就可以了。


    配置完成後,就可以直接import了:


    import './style.less';