小編給大家分享一下如何使用create-react-app添加css modules、sasss和antd,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
成都網絡公司-成都網站建設公司創新互聯公司十余年經驗成就非凡,專業從事成都網站制作、網站建設,成都網頁設計,成都網頁制作,軟文推廣,廣告投放等。十余年來已成功提供全面的成都網站建設方案,打造行業特色的成都網站建設案例,建站熱線:18980820575,我們期待您的來電!
create-react-app 是facebook的官方腳手架,對于個人開發者和中小型公司快速創建項目非常推薦。react的CSS解決方案有很多,這里我技術選型時用 css modules 和 sass ,然后配合antd使用通用組件庫。但是create-react-app原生并不支持 css modules 和 sass ,所以需要額外配置。
配置
增加css modules和sass
使用eject暴露配置
create-react-app 默認是沒有暴露 webpack 配置的,所以需要eject一下。注意如果項目在git倉庫環境下,先提交代碼到git倉庫,否則會報錯
npm run eject
npm添加css modules和sass
npm install react-css-modules npm install sass-loader node-sass
這里安裝sass可能會遇到墻的問題報錯,所以要么使用cnpm或者使用本地代理設置,因為我有ss所以使用本地代理
// 開啟代理 npm config set proxy http://127.0.0.1:1080 // 安裝完sass后關閉代理 npm config delete proxy
webpack配置
重點來了,我們需要給 webpack 配置上 css-modules 和 sass-loader 。但是使用 css-modules 會使 node_modules 庫里的css樣式找不到,比如后面要使用到的antd,這個時候我們需要inclube來排除影響 node_modules ,使得 css-modules 不會影響到 node_modules
修改項目中 config 目錄下的 webpack.config.dev.js 和 webpack.config.prod.js ,說明下這兩個文件,前一個是開發環境 npm start 使用,后一個是 npm run build 打包后使用
修改 webpack.config.dev.js :
大約在160行左右,找到 test: /\.css$/ ,中文注釋的地方就是修改和增加的地方
{ test: [/\.css$/, /\.scss$/],// 這里增加SCSS的支持 exclude: [/node_modules/],// 這里去排除node_modules,防止css modules影響到node_modules use: [ require.resolve('style-loader'), { loader: require.resolve('css-loader'), options: { importLoaders: 1, modules: true, // 這里增加對css modules的支持 localIdentName: '[name]__[local]__[hash:base64:5]' //這里增加對css modules的支持 }, }, { loader: require.resolve('sass-loader'), // 這里增加sass的支持 }, { loader: require.resolve('postcss-loader'), options: { // Necessary for external CSS imports to work // https://github.com/facebookincubator/create-react-app/issues/2677 ident: 'postcss', 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', }), ], }, }, ], }, // 因為上面排除了css_modules所以這里一定要再添加個排除src來識別css_modules // 其實就是復制之前沒修改前的所有,再增加一個exclude: [/src/] { test: /\.css$/, exclude: [/src/], // 這里添加排除src, use: [ require.resolve('style-loader'), { loader: require.resolve('css-loader'), options: { importLoaders: 1, }, }, { loader: require.resolve('postcss-loader'), options: { // Necessary for external CSS imports to work // https://github.com/facebookincubator/create-react-app/issues/2677 ident: 'postcss', 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', }), ], }, }, ], }
修改 webpack.config.prod.js :
和上面修改 webpack.config.dev.js 類似
{ test: [/\.css$/, /\.scss$/], // 這里增加SCSS的支持 exclude: [/node_modules/], // 這里去排除node_modules loader: ExtractTextPlugin.extract( Object.assign( { fallback: { loader: require.resolve('style-loader'), options: { hmr: false, }, }, use: [ { loader: require.resolve('css-loader'), options: { importLoaders: 1, minimize: true, sourceMap: true, modules: true, // 這里添加css modules支持 }, }, { loader: require.resolve('postcss-loader'), options: { // Necessary for external CSS imports to work // https://github.com/facebookincubator/create-react-app/issues/2677 ident: 'postcss', 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('sass-loader'), // 這里添加sass支持 } ], }, extractTextPluginOptions ) ), // Note: this won't work without `new ExtractTextPlugin()` in `plugins`. }, { test: /\.css$/, exclude: [/src/], // 排除src loader: ExtractTextPlugin.extract( Object.assign( { fallback: { loader: require.resolve('style-loader'), options: { hmr: false, }, }, use: [ { loader: require.resolve('css-loader'), options: { importLoaders: 1, minimize: true, sourceMap: true, }, }, { loader: require.resolve('postcss-loader'), options: { // Necessary for external CSS imports to work // https://github.com/facebookincubator/create-react-app/issues/2677 ident: 'postcss', 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', }), ], }, } ], }, extractTextPluginOptions ) ), // Note: this won't work without `new ExtractTextPlugin()` in `plugins`. }
安裝antd和配置
主要是安裝配置 antd 和 babel-plugin-import ,這樣可以使得 antd 按需加載樣式
npm添加antd和babel-plugin-import
npm install antd npm install babel-plugin-import
配置babel
在項目根目錄下增加 .babelrc 文件,然后配置如下
{ "presets": [ "react-app" ], "plugins": [ "transform-runtime", [ "import", { "libraryName": "antd", "style": "css" } ] ] }
以上是“如何使用create-react-app添加css modules、sasss和antd”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創新互聯行業資訊頻道!
本文名稱:如何使用create-react-app添加cssmodules、sasss和antd
文章路徑:http://vcdvsql.cn/article12/iijjdc.html
成都網站建設公司_創新互聯,為您提供定制網站、手機網站建設、自適應網站、網站制作、Google、域名注冊
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯