ãã®èŠåã¯ãªã³ã©ã€ã³ç°å¢ã§ã¯åçŸã§ããªããããçŽæ¥éä¿¡ããŸãã
Next.jsãããžã§ã¯ãã§AntDesignã䜿çšããŠããŸãã babel-plugin-import
ã䜿çšããŠantdã³ã³ããŒãã³ãããªã³ããã³ãã§ããŒãããŠããŸãã æåã®ããŒãžã衚瀺ããŠãåé¡ãããŸããããå¥ã®ããŒãžã«åãæ¿ãããšã次ã®èŠåã衚瀺ãããŸãã
chunk styles [mini-css-extract-plugin]
Conflicting order between:
* css ./node_modules/css-loader??ref--5-2!./node_modules/less-loader/dist/cjs.js??ref--5-3!./node_modules/antd/lib/button/style/index.less
* css ./node_modules/css-loader??ref--5-2!./node_modules/less-loader/dist/cjs.js??ref--5-3!./node_modules/antd/lib/dropdown/style/index.less
ãŸããããŒãžã®ã¹ã¿ã€ã«ãæ£ãããªããããæŽæ°åŸã«åé¡ããªããªããŸããã
ãããžã§ã¯ãããã«ããããšãã«ã次ã®èŠåã衚瀺ãããŸããã
â web git:(master) â npm run build
> [email protected] build /Users/jagger/projects/jwpay/web
> next build
â Client
Compiled successfully in 12.77s
â Server
Compiled successfully in 8.64s
> Using external babel configuration
> Location: "/Users/jagger/projects/jwpay/web/.babelrc"
> Emitted warnings from webpack
Error: chunk commons [mini-css-extract-plugin]
Conflicting order between:
* css ./node_modules/css-loader??ref--5-1!./node_modules/less-loader/dist/cjs.js??ref--5-2!./node_modules/antd/lib/button/style/index.less
* css ./node_modules/css-loader??ref--5-1!./node_modules/less-loader/dist/cjs.js??ref--5-2!./node_modules/antd/lib/dropdown/style/index.less
at MiniCssExtractPlugin.renderContentAsset (/Users/jagger/projects/jwpay/web/node_modules/mini-css-extract-plugin/dist/index.js:342:37)
at Object.render (/Users/jagger/projects/jwpay/web/node_modules/mini-css-extract-plugin/dist/index.js:173:32)
at Compilation.createChunkAssets (/Users/jagger/projects/jwpay/web/node_modules/webpack/lib/Compilation.js:2429:29)
at hooks.optimizeTree.callAsync.err (/Users/jagger/projects/jwpay/web/node_modules/webpack/lib/Compilation.js:1299:10)
at AsyncSeriesHook.eval [as callAsync] (eval at create (/Users/jagger/projects/jwpay/web/node_modules/tapable/lib/HookCodeFactory.js:32:10), <anonymous>:9:1)
at AsyncSeriesHook.lazyCompileHook (/Users/jagger/projects/jwpay/web/node_modules/tapable/lib/Hook.js:154:20)
at Compilation.seal (/Users/jagger/projects/jwpay/web/node_modules/webpack/lib/Compilation.js:1244:27)
at hooks.make.callAsync.err (/Users/jagger/projects/jwpay/web/node_modules/webpack/lib/Compiler.js:624:17)
at _err0 (eval at create (/Users/jagger/projects/jwpay/web/node_modules/tapable/lib/HookCodeFactory.js:32:10), <anonymous>:11:1)
at Promise.all.then (/Users/jagger/projects/jwpay/web/node_modules/webpack/lib/DynamicEntryPlugin.js:74:20)
at process.internalTickCallback (internal/process/next_tick.js:77:7)
Error: chunk commons [mini-css-extract-plugin]
Conflicting order between:
* css ./node_modules/css-loader??ref--5-1!./node_modules/less-loader/dist/cjs.js??ref--5-2!./node_modules/antd/lib/dropdown/style/index.less
* css ./node_modules/css-loader??ref--5-1!./node_modules/less-loader/dist/cjs.js??ref--5-2!./node_modules/antd/lib/icon/style/index.less
at MiniCssExtractPlugin.renderContentAsset (/Users/jagger/projects/jwpay/web/node_modules/mini-css-extract-plugin/dist/index.js:342:37)
at Object.render (/Users/jagger/projects/jwpay/web/node_modules/mini-css-extract-plugin/dist/index.js:173:32)
at Compilation.createChunkAssets (/Users/jagger/projects/jwpay/web/node_modules/webpack/lib/Compilation.js:2429:29)
at hooks.optimizeTree.callAsync.err (/Users/jagger/projects/jwpay/web/node_modules/webpack/lib/Compilation.js:1299:10)
at AsyncSeriesHook.eval [as callAsync] (eval at create (/Users/jagger/projects/jwpay/web/node_modules/tapable/lib/HookCodeFactory.js:32:10), <anonymous>:9:1)
at AsyncSeriesHook.lazyCompileHook (/Users/jagger/projects/jwpay/web/node_modules/tapable/lib/Hook.js:154:20)
at Compilation.seal (/Users/jagger/projects/jwpay/web/node_modules/webpack/lib/Compilation.js:1244:27)
at hooks.make.callAsync.err (/Users/jagger/projects/jwpay/web/node_modules/webpack/lib/Compiler.js:624:17)
at _err0 (eval at create (/Users/jagger/projects/jwpay/web/node_modules/tapable/lib/HookCodeFactory.js:32:10), <anonymous>:11:1)
at Promise.all.then (/Users/jagger/projects/jwpay/web/node_modules/webpack/lib/DynamicEntryPlugin.js:74:20)
at process.internalTickCallback (internal/process/next_tick.js:77:7)
Error: chunk commons [mini-css-extract-plugin]
Conflicting order between:
* css ./node_modules/css-loader??ref--5-1!./node_modules/less-loader/dist/cjs.js??ref--5-2!./node_modules/antd/lib/menu/style/index.less
* css ./node_modules/css-loader??ref--5-1!./node_modules/less-loader/dist/cjs.js??ref--5-2!./node_modules/antd/lib/icon/style/index.less
at MiniCssExtractPlugin.renderContentAsset (/Users/jagger/projects/jwpay/web/node_modules/mini-css-extract-plugin/dist/index.js:342:37)
at Object.render (/Users/jagger/projects/jwpay/web/node_modules/mini-css-extract-plugin/dist/index.js:173:32)
at Compilation.createChunkAssets (/Users/jagger/projects/jwpay/web/node_modules/webpack/lib/Compilation.js:2429:29)
at hooks.optimizeTree.callAsync.err (/Users/jagger/projects/jwpay/web/node_modules/webpack/lib/Compilation.js:1299:10)
at AsyncSeriesHook.eval [as callAsync] (eval at create (/Users/jagger/projects/jwpay/web/node_modules/tapable/lib/HookCodeFactory.js:32:10), <anonymous>:9:1)
at AsyncSeriesHook.lazyCompileHook (/Users/jagger/projects/jwpay/web/node_modules/tapable/lib/Hook.js:154:20)
at Compilation.seal (/Users/jagger/projects/jwpay/web/node_modules/webpack/lib/Compilation.js:1244:27)
at hooks.make.callAsync.err (/Users/jagger/projects/jwpay/web/node_modules/webpack/lib/Compiler.js:624:17)
at _err0 (eval at create (/Users/jagger/projects/jwpay/web/node_modules/tapable/lib/HookCodeFactory.js:32:10), <anonymous>:11:1)
at Promise.all.then (/Users/jagger/projects/jwpay/web/node_modules/webpack/lib/DynamicEntryPlugin.js:74:20)
at process.internalTickCallback (internal/process/next_tick.js:77:7)
Error: chunk commons [mini-css-extract-plugin]
Conflicting order between:
* css ./node_modules/css-loader??ref--5-1!./node_modules/less-loader/dist/cjs.js??ref--5-2!./node_modules/antd/lib/tooltip/style/index.less
* css ./node_modules/css-loader??ref--5-1!./node_modules/less-loader/dist/cjs.js??ref--5-2!./node_modules/antd/lib/icon/style/index.less
at MiniCssExtractPlugin.renderContentAsset (/Users/jagger/projects/jwpay/web/node_modules/mini-css-extract-plugin/dist/index.js:342:37)
at Object.render (/Users/jagger/projects/jwpay/web/node_modules/mini-css-extract-plugin/dist/index.js:173:32)
at Compilation.createChunkAssets (/Users/jagger/projects/jwpay/web/node_modules/webpack/lib/Compilation.js:2429:29)
at hooks.optimizeTree.callAsync.err (/Users/jagger/projects/jwpay/web/node_modules/webpack/lib/Compilation.js:1299:10)
at AsyncSeriesHook.eval [as callAsync] (eval at create (/Users/jagger/projects/jwpay/web/node_modules/tapable/lib/HookCodeFactory.js:32:10), <anonymous>:9:1)
at AsyncSeriesHook.lazyCompileHook (/Users/jagger/projects/jwpay/web/node_modules/tapable/lib/Hook.js:154:20)
at Compilation.seal (/Users/jagger/projects/jwpay/web/node_modules/webpack/lib/Compilation.js:1244:27)
at hooks.make.callAsync.err (/Users/jagger/projects/jwpay/web/node_modules/webpack/lib/Compiler.js:624:17)
at _err0 (eval at create (/Users/jagger/projects/jwpay/web/node_modules/tapable/lib/HookCodeFactory.js:32:10), <anonymous>:11:1)
at Promise.all.then (/Users/jagger/projects/jwpay/web/node_modules/webpack/lib/DynamicEntryPlugin.js:74:20)
at process.internalTickCallback (internal/process/next_tick.js:77:7)
â /
â /_app
â /_document
â /_error
â /login
â /register
package.json
{
"name": "web",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"dev": "LOG_API_REQUEST=y node server.js",
"build": "next build",
"start": "NODE_ENV=production node server.js"
},
"author": "",
"license": "ISC",
"dependencies": {
"@fortawesome/fontawesome-svg-core": "^1.2.8",
"@fortawesome/free-brands-svg-icons": "^5.5.0",
"@fortawesome/free-regular-svg-icons": "^5.5.0",
"@fortawesome/free-solid-svg-icons": "^5.5.0",
"@fortawesome/react-fontawesome": "^0.1.3",
"@zeit/next-css": "^1.0.1",
"@zeit/next-less": "^1.0.1",
"@zeit/next-sass": "^1.0.1",
"ant-design-pro": "^2.2.1",
"antd": "^3.13.2",
"babel-plugin-import": "^1.11.0",
"bootstrap": "^4.1.3",
"express": "^4.16.4",
"i": "^0.3.6",
"isomorphic-unfetch": "^3.0.0",
"less": "^3.9.0",
"less-vars-to-js": "^1.3.0",
"next": "^8.0.1",
"node-sass": "^4.10.0",
"npm": "^6.4.1",
"react": "^16.8.1",
"react-dom": "^16.8.1",
"react-redux": "^5.1.1",
"redux": "^4.0.1",
"redux-thunk": "^2.3.0"
},
"devDependencies": {
"http-proxy-middleware": "^0.19.1",
"redux-devtools-extension": "^2.13.5"
}
}
.babelrc
{
"presets": [
"next/babel"
],
"plugins": [
[
"import",
{
"libraryName": "antd",
"style": true
},
"antd"
],
[
"import",
{
"libraryName": "ant-design-pro",
"style": true,
"camel2DashComponentName": false,
},
"ant-design-pro"
]
]
}
next.config.js
const withCSS = require('@zeit/next-css')
const withSass = require('@zeit/next-sass')
const withLess = require('@zeit/next-less')
const lessToJS = require('less-vars-to-js')
const fs = require('fs')
const path = require('path')
// fix: prevents error when .less files are required by node
if (typeof require !== 'undefined') {
require.extensions['.less'] = file => { }
}
const isProd = process.env.NODE_ENV === 'production'
module.exports = withLess(withSass(withCSS({
lessLoaderOptions: {
javascriptEnabled: true,
modifyVars: lessToJS(
fs.readFileSync(path.resolve(__dirname, './assets/antd.less'), 'utf8')
),
},
})))
ããã«ã¡ã¯@jaggerwang ãåé¡ã®èŠä»¶ã«æºæ ããŠããªããããåé¡ã¯ã¯ããŒãºãããŸãããåé¡ãã«ããŒã䜿çšããŠ
ããã«ã¡ã¯@jaggerwangãå¹ççã«éä¿¡ã§ããããã«ããããã«ãåé¡ã«ã¯ç¹å®ã®ãã©ãŒãããèŠä»¶ããããèŠä»¶ãæºãããŠããªããããåé¡ã¯èªåçã«ã¯ããŒãºãããŸããåé¡ã¢ã·ã¹ã¿ã³ãã䜿çšããŠåé¡ãäœæãããšã©ãŒã®ç¹å®ã«åœ¹ç«ãŠãããšãã§ããŸãããååããããšãããããŸãïŒ
Issueã«ãã®ãããªé«ããããå€ãèšå®ããå¿ èŠããããŸããïŒç§ã¯ããã®ãããªå³ããèŠä»¶ãæã€ãªãŒãã³ãœãŒã¹ãããžã§ã¯ããèŠãããšããããŸããããã¹ãŠã®ãããžã§ã¯ãããªã³ã©ã€ã³ã§ç°¡åã«ãã¢ã³ã¹ãã¬ãŒã·ã§ã³ã§ããããã§ã¯ãããŸããããã®ã³ã³ãã€ã«ãšããã±ãŒãžã³ã°ã®ãšã©ãŒã¯éåžžã«æ確ã«èª¬æãããŠãããç°¡åã«åçŸã§ããŸãã
2éã®èª¬æã泚ææ·±ãæºåãããŠããã®ã¯æ®å¿µã§ããç§ãåãåé¡ã«ééããŸãããã©ã®ããã«ããã解決ããŸãããïŒ
@bluenergyã¯æªè§£æ±ºã§ãããæ©èœããã®ã§ãæåã«çœ®ããŸãããã Antdã«åé¡ãèšåããã®ã¯æ¬åœã«é¢åã§ããä»ã®èª¬æã¯ç°¡åã«èšãããšãã§ããŸãããå®éã®äŸã瀺ãå¿ èŠããããŸããã³ãŒãã¯éå ¬éã§ããããã¢ã®äŸå šäœãå ¬éããã«ã¯ããªãã®æéãããããŸããéèŠãªã®ã¯ããã®åé¡ã¯äœ¿çšæ³ãšã¯ã»ãšãã©é¢ä¿ããªããäž»ã«æ§æã«é¢ãããã®ã§ãããåçŸããã®ã¯é£ãããªããšããããšã§ããåãã¬ãã«ã®ä»ã®ãããžã§ã¯ããšæ¯èŒããŠãAntdã®åé¡ãéåžžã«å°ãªãã®ãäžæè°ã§ã¯ãããŸããããããçç±ã§ãã
ãã®ãããªå³ããèŠä»¶ãæã€ãªãŒãã³ãœãŒã¹ãããžã§ã¯ããèŠãããšããããŸããã
ããã¯äºå®ã§ã¯ãããŸãããå®éãåé¡ãã«ããŒå šäœã®ã¢ã€ãã¢ã¯ãvueã³ãã¥ããã£ã®å®è·µã«åºã¥ããŠããŸãã
åçŸã«ã¯å€ãã®ãšãã«ã®ãŒãå¿ èŠã§ãããç§ãã¡ã®èœåãšãšãã«ã®ãŒãéãããŠããŸããããå€ãã®æ å ±ãšåçŸæ§ã®ãããã£ãŒãããã¯ãæäŸãããã®ãããéããããªãœãŒã¹ãåªå ããŸããå€ãã®åé¡ïŒç¹ã«webpackæ§æïŒã¯ãªã³ã©ã€ã³ã³ãŒããµã³ãããã¯ã¹ã§ã¯æäŸã§ããªãããšãããã£ãŠããŸãããã®ãããªç¶æ³ã§ã¯ãåçŸããããã®æå°éã®gitãªããžããªãªããžããªãæäŸã§ããŸããé¢é£æ å ±ãšçç±ã¯ãvueã®äœè ã§ããYouXiaoyouã«ãã£ãŠæ確ã«æžãããŠããŸãã
åãã¬ãã«ã®ä»ã®ãããžã§ã¯ããšæ¯èŒããŠãAntdã®åé¡ãéåžžã«å°ãªãã®ãäžæè°ã§ã¯ãããŸããããããçç±ã§ãã
äžèšã®ãããžã§ã¯ãã¯ãå³æ Œãªåé¡ãã«ããŒãšèªåã¯ããŒãºæ©èœãæäŸããŸãããåé¡åŠçã¯äŸç¶ãšããŠæãå¹ççãªãã®ã®1ã€ã§ããããã¯ã1ã€ã¯ããå€åã§ããããã1ã€ã¯ã³ãã¥ããã£ã®åŠçã®ç®èº«ãå€ãããšã§ããã3ã€ç®ã¯è¯ããã£ãŒãããã¯ããã¯ããªããšç§ãããå¹ççã«ããããšãã§ããŸãã
æåŸã«ããã£ãŒãããã¯ãšç解ãããããšã@jaggerwang ããã®åé¡ã«é¢ããŠã¯ãåçŸå¯èœãªgitãªããžããªãæäŸããåŸãåéããŠãã©ããŒã¢ããããŸãã
ãšã£ãïŒæéããããšãã«å ¥æããŠãã ããã
@jaggerwang @ afc163ã§ããã®åé¡ãçºçãã create-react-app
ã䜿çšããŠåé¡ãåçŸããbabel-plugin-importãšé
延èªã¿èŸŒã¿ãè¿œå ããantdã³ã³ããŒãã³ããç°¡åã«äœ¿çšãã詳现ãªã¬ã³ãŒããgitãã yarn build
ãå®è¡ãããšã次ã®èŠåã衚瀺ãããŸãã
ãã®åé¡ã解決ããããšè©Šã¿ããšããã3ã€ã®è§£æ±ºçãèŠã€ãããŸããã䟿å®äž3ã€ã®ãã©ã³ããäœæãããŸããã調æŽåŸã yarn build
å®è¡ããåŸãããã³ããã衚瀺ãããªããªããŸããã
"plugins": [
[
"import",
{
"libraryName": "antd",
"libraryDirectory": "es"
}
]
]
ãã¡ããããããã¯ç§ã®äžæçãªè§£æ±ºçã§ããã倧ç©ãçç±ã説æããããå€ãã®è§£æ±ºçãæäŸã§ããããšãé¡ã£ãŠããŸãã
ç§ããã®åé¡ãæ±ããŠããŸããããŸããŸãªã¹ã¿ã€ã«ã®è¡çª
ç§ããã®åé¡ã«ééããŸãããå©ããŠãã ããïŒ
React.lazy
ãå°å
¥ãããšãã«ãåãåé¡ãçºçããŸããã æ®å¿µãªãããç§ã¯å€§èŠæš¡ãªã³ãŒãããŒã¹ã§é«ã¬ãã«ã§ã³ãŒããåå²ãå§ããŸããããããã§ãã©ã®ã€ã³ããŒããééã£ãé åºã§ãããã远跡ããããšãã§ããŸããã§ããã
ç§ã¯åãåé¡ãæ±ããŠããŸãã åãã§ããã€ãã®å©ããããã ããã°å¹žãã§ãã next-antd-aza-less - httpsïŒ //www.npmjs.com/package/next-antd-aza-lessãè¿œå ãããšããã®åé¡ãçºçãå§ããŸããã
umiã³ãŒãã調ã¹ãåŸããã©ã°ã€ã³FilterCSSConflictingWarningã
@ lonsdale8734ãã®ãã©ã°ã€ã³ãè¿œå ããŸãããããã§ãææ°ããŒãžã§ã³ã§åé¡ãçºçããå Žåã¯ããªããžããªãäœæããŠãã ããã ãããèŠãŠãããŸãã
antdã³ã³ããŒãã³ãã®ã¹ã¿ã€ã«ã¯ç¬ç«ããŠãããã¹ã¿ã€ã«ãã¡ã€ã«ã®é åºãšã¯é¢ä¿ããªãããã§ãã ãããã®èŠåã¯ç¡èŠãããããã£ã«ã¿ãŒã䜿çšããŠã³ã³ãœãŒã«ã§ã¹ãããã§ããŸãã
ãã ããããã解決ãããå Žåã¯ã mini-css-extract-pluginã®ã¢ããã€ã¹ãåç
§ããŠã次ã®ããã«ã³ã³ããŒãã³ãã®ã€ã³ããŒãã®é åºãç¶æ
import { Button, Table } from 'antd'; // File 1
import { Table, Button } from 'antd'; // File 2
ã«
import { Button, Table } from 'antd'; // File 1
import { Button, Table } from 'antd'; // File 2
ããäžåºŠæ³šæããŠãã ããïŒantdã³ã³ããŒãã³ãã¯ã¹ã¿ã€ã«ãç¬ç«ããŠãããããåãé åºã§ã€ã³ããŒãããŠãå®å šã§ãã
@zombieJ
babel-plugin-import
åŠçããæ¹ãè¯ãã§ããïŒ
bizãããžã§ã¯ãã§ã®é åºã®å€æŽã«ã¯æéãããããããŸãã
@jaggerwang
ãã®ãã°ã®ãã1ã€ã®çç±ã¯ãlibãã£ã¬ã¯ããªããã³ã³ããŒãã³ããã€ã³ããŒãããããšã§ãã
äŸãã°ïŒ
import { Button } from 'antd'
import Dropdown from 'antd/lib/dropdown'
...
ãããŠãããªãã®ãããžã§ã¯ãã¯ããå°ãªãbabel-plugin-import
ã§
ä»æ¥ããã®ã±ãŒã¹ã§mini-css-extract-plugin
èŠåãçºçããå¯èœæ§ãããããšãããããŸãã
ç§ã¯antdã§customize-craã䜿çšããŠããŸãããåãåé¡ãçºçããŸãããããã¯ç§ã®ã³ãŒãã§ãããéåžžã«åçŽã§ããã®ãšã©ãŒãçºçããŸãã
const addMyPlugin = config => {
..ã
};
module.exports = overrideïŒ
addMyPluginã
fixBabelImportsïŒ "import"ã{
libraryNameïŒ "antd"ã
libraryDirectoryïŒ "es"ã
ã¹ã¿ã€ã«ïŒtrue
}ïŒã
addLessLoaderïŒ{
javascriptEnabledïŒtrueã
modifyVarsïŒ{
"@ primary-color"ïŒ "ïŒ0A4080"
}
}ïŒ
ïŒ;
ãã®ããã®è§£æ±ºçã¯ãããŸããïŒ
ããã«ãã人ã®åæ°ãäžåœèªïŒãŸãã¯ãããäœã§ããïŒã§å¿çããŠããã®ãèŠãŠããããã§ãã 次åãã±ãããéããšãã¯ã€ã¿ãªã¢èªã«ãªããŸãã
@AmazingTurtleããããŸããããéçºè ã§Google翻蚳ã®ããšãèããããšããªãå Žåã¯ãå°ã£ãŠããŸãã 誰ããè±èªã話ãããã§ã¯ãããŸããã å®éã圌ãã¯ã»ãšãã©è©±ããªã...ãããåŸ ã€...äžåœèªïŒå京èªïŒã
@blujedisãã©ãŠã¶ã«åã蟌ãŸãã翻蚳æ©èœã䜿çšããŠããŸãïŒå³ã¯ãªãã¯->翻蚳ïŒã github.comã¯èšèªãENã«èšå®ããŠãããããENããœãŒã¹èšèªãšããŠåŒ·å¶ããäžåœèªã翻蚳ããŸããã 翻蚳è ã¯äžåºŠã«è€æ°ã®èšèªã翻蚳ããããšãã§ããªãã®ã§ãç§ã¯åã«åæçš¿ãã³ããŒããŠæåã§ç¿»èš³ããã®ã¯å¥œãã§ã¯ãããŸããã
react-app-rewired
ãŸãã¯ã¢ããã°ãšã¹ãã£ãã¯ã䜿çšããŠdisable mini-css-extract-plugin warning
æ¹æ³ã䜿çšããå ŽåïŒ
"mini-css-extract-plugin": "^0.8.0"
ãããããšã確èªããŠãã ãããããã§ãªãå Žåã¯ãè¿œå ããŠãã ããïŒãã®ããŒãžã§ã³ã«ã¯ã泚æã®èŠåãã¹ãããããããã®è¿œå ã®ãã©ã°ããããŸãïŒconfig-overrides.js
è¿œå ããŸãïŒ // force react-scripts to use newer version of `mini-css-extract-plugin` and ignore css ordering warnings
// (related to issue: https://github.com/facok/create-react-app/issues/5372)
for (let i = 0; i < config.plugins.length; i++) {
const p = config.plugins[i]
if(!!p.constructor && p.constructor.name === MiniCssExtractPlugin.name) {
const miniCssExtractOptions = {...p.options, ignoreOrder: true}
config.plugins[i] = new MiniCssExtractPlugin(miniCssExtractOptions)
break
}
}
ã¡ãã¥ãŒãããããããŠã³ãããŒã«ãããã®éã§åé¡ã競åãããããããããããŠã³ãå€éšã«ç§»åããŸããã ããã¯ä»åããŠããŸã
ãã
import { Menu, Dropdown, Button, Icon } from 'antd';
ã«
import { Menu, Button, Icon } from 'antd';
import Dropdown from 'antd/lib/dropdown';
ãœãªã¥ãŒã·ã§ã³ã¯ããã¹ãŠã®antdã³ã³ããŒãã³ãã®ã€ã³ããŒãã䞊ã¹æ¿ããã®ãšåããããç°¡åã§ããïŒ
ãããåéã§ããŸããïŒïŒ
@zombieJãœãªã¥ãŒã·ã§ã³ãåžžã«æ©èœãããšã¯éããŸããã å°ããªãããžã§ã¯ãã®ãã¹ãŠã®ã€ã³ããŒããäžè²«æ§ã®ãããã®ã«æŽçããŸãããããŸã ãã®åé¡ãçºçããŠããŸãã
åéããŠãã ãã...
Gastbyãããžã§ã¯ãã§ãåãåé¡ãçºçããŠããã®ã§ãCreate ReactAppã ãã§ã¯ãããŸããã
@ChuckJonasã«åæããŸãã
@zombieJ ã
ã€ã³ããŒããã¢ã«ãã¡ãããé ã«äžŠã¹ãã ãã§ã¯åé¡ã¯è§£æ±ºã§ããªããšæããŸãã ç§ã¯ãã§ã«ãããè¡ã£ãŠããŸãïŒPrettier / ESLintçµç±ïŒïŒ
ãããŠãç§ã¯æåéããããã®èŠåã®ããŒãžãååŸããŠããŸãã
ãšã©ãŒãé ãããã«webpack-filter-warnings-pluginãã€ã³ã¹ããŒã«ã
const FilterWarningsPlugin = require('webpack-filter-warnings-plugin');
module.exports = {
// ... rest of webpack config
plugins: [
new FilterWarningsPlugin({
exclude: /Conflicting order/,
})
]
}
ã¢ããªã100ïŒ æ£ãã衚瀺ãããå Žåã¯ãèŠåãé衚瀺ã«ããããšã¯ãå§ãã§ããŸããã ç§ãèŠã€ããå¯äžã®å®éã®åé¿çã¯ãbabelãã©ã°ã€ã³ã䜿çšãã代ããã«ãã¹ã¿ã€ã«ã·ãŒãå šäœãã€ã³ããŒãããããšã§ãã
以äžãååŸããŸãã
ããªãã¯è§£æ±ºçãèŠã€ããŸãããïŒ
ã¢ããªã±ãŒã·ã§ã³å ã§antdã³ã³ããŒãã³ããé 延ããŒãããããšã§ããã®ãšã©ãŒãåé¿ã§ããŸããNextJSã®äŸã¯ããã®æ¹æ³ã§ããŒãããããšã§ãã
const Menu = dynamic(() => import('antd/lib/menu'))
const MenuItem = dynamic(() => import('antd/lib/menu/MenuItem'))
ããã§ã¯ãantdã®ã¡ãã¥ãŒãšã¡ãã¥ãŒé
ç®ããŸãã¯MenuItem
ãMenu.Item
ããimport {Menu} from 'antd'
æ§æã䜿çšã§ããŸãã
ãããŸã§ã®ãšãããã¹ã¿ã€ã«éã®é åºã®ç«¶åã«é¢ããåé¡ã¯ãããŸãããã
ããã¯ã䜿çšéãå°ãªããbabel-import-pluginã䜿çšããŠããå Žåã«é©çšãããŸãã
ã¡ãã¥ãŒãããããããŠã³ãããŒã«ãããã®éã§åé¡ã競åãããããããããããŠã³ãå€éšã«ç§»åããŸããã ããã¯ä»åããŠããŸã
ãã
import { Menu, Dropdown, Button, Icon } from 'antd';
ã«
import { Menu, Button, Icon } from 'antd'; import Dropdown from 'antd/lib/dropdown';
ããã¯ã次ã®ããã«ãã¹ãŠã®Button
ãantd/lib/button
å¥ã«ã€ã³ããŒãããããšã§æ©èœããŠããŸããã
import { Form, Input, Row, Col } from 'antd'
import Button from 'antd/lib/button'
ããããšã@phattranky
Antdã«é¢é£ããå Žåã¯ã次ã®2ã€ã®ããšãè¡ããŸã-
babel-plugin-importã®style
ãªãã·ã§ã³ãæå®ããŠã¹ã¿ã€ã«ãã€ã³ããŒãããå Žåã¯ã 'css'
ããtrue
ã«å€æŽããŸããããã«ãããã®less
ããŒãžã§ã³ãã€ã³ããŒããããŸãã antdã
ããªãããã¹ã¿ã€ã«ãã€ã³ããŒãããå Žåã¯'antd/dist/antd.css'
ããããå€æŽããantd/dist/antd.less
ã
next.config.js
éšåã¯ããã®nextjs-css-less-antdãã確èªã§ããŸãã
ã¡ãã¥ãŒãããããããŠã³ãããŒã«ãããã®éã§åé¡ã競åãããããããããããŠã³ãå€éšã«ç§»åããŸããã ããã¯ä»åããŠããŸã
ãã
import { Menu, Dropdown, Button, Icon } from 'antd';
ã«
import { Menu, Button, Icon } from 'antd'; import Dropdown from 'antd/lib/dropdown';
ããããšãïŒ ç§ã®ããã«åããŸãã 競åããã³ã³ããŒãã³ããåå¥ã«ã€ã³ããŒãããå¿ èŠããããŸãã ç§ã®å Žåã以äžã®3ã€ã®ã³ã³ããŒãã³ãã競åããããã次ã®ããã«ã€ã³ããŒãããŸãã
import { Button } from 'antd';
import Modal from 'antd/lib/modal';
import message from 'antd/lib/message';
ã¯ããç§ã¯ãããéããŠæãã«èŠããããšãç¥ã£ãŠããŸãããããããã¯åé¡ã解決ããå¯äžã®æ¹æ³ã§ãã
ã¡ãã¥ãŒãããããããŠã³ãããŒã«ãããã®éã§åé¡ã競åãããããããããããŠã³ãå€éšã«ç§»åããŸããã ããã¯ä»åããŠããŸã
ããimport { Menu, Dropdown, Button, Icon } from 'antd';
ã«
import { Menu, Button, Icon } from 'antd'; import Dropdown from 'antd/lib/dropdown';
ããããšãïŒ ç§ã®ããã«åããŸãã 競åããã³ã³ããŒãã³ããåå¥ã«ã€ã³ããŒãããå¿ èŠããããŸãã ç§ã®å Žåã以äžã®3ã€ã®ã³ã³ããŒãã³ãã競åããããã次ã®ããã«ã€ã³ããŒãããŸãã
import { Button } from 'antd'; import Modal from 'antd/lib/modal'; import message from 'antd/lib/message';
ã¯ããç§ã¯ãããéããŠæãã«èŠããããšãç¥ã£ãŠããŸãããããããã¯åé¡ã解決ããå¯äžã®æ¹æ³ã§ãã
ã¯ããã¢ãŒãã«ãåå¥ã«ã€ã³ããŒããããšèŠåãæ¶ããŸããã
import Modal from 'antd/lib/modal/Modal'
æãåèã«ãªãã³ã¡ã³ã
ããã«ãã人ã®åæ°ãäžåœèªïŒãŸãã¯ãããäœã§ããïŒã§å¿çããŠããã®ãèŠãŠããããã§ãã 次åãã±ãããéããšãã¯ã€ã¿ãªã¢èªã«ãªããŸãã