Open iamkun opened 5 years ago
Random idea... even I bundle two dayjs instances(one mutable, one immutable), it's still obviously smaller than using momentjs. It has to be 2 different names if they want to be both bundled.
很棒,尝试一下。如果 antd 能来做这个事情就更好了。
@snokier https://github.com/ant-design/ant-design/issues/15311 You can join this issue with maintainers from Antd.
@chenyong Will that make user confusion? Since mutable and immutable is hard to make it clear for some developer (I think, may be)
Since mutable and immutable is hard to make it clear for some developer (I think, may be)
I'm afraid so... when mutable data and immutable data get used together, people get confused.
@chenyong
It would be better if Antd could make a little refactor of the way using moment.js.
Treat moment object as immutable, and call clone
each time before changing it's value like moment().clone().xxx
.
In this way, there's no need using BadMutable plugin anymore. And Day.js is immutable all the time.
按着您的步骤,引入了dayjs和相关插件,还是说 antd只支持moment
The value/defaultValue of DatePicker or MonthPicker must be a moment object after antd@2.0
@hytStart Can you provide a test git repo, please?
@hytStart Can you provide a test git repo, please?
Hi, sorry to bother you,please correct me if it's my mistake. index.js datepicker.js
@hytStart You forgot the step 2 section : Update Webpack config.
@iamkun The localeData plugin is incompatible with react-dates. I applied all the steps you provided but I get an error like the screenshot below:
It seems to be the problem that moment().localeData()
works but moment.localeData
becomes undefined
.
P.S. Thanks for the great way to replace moment lib!
@yongdamsh Can you provide a test git repo, please?
@iamkun Here is a repo for reproduction, thanks! https://github.com/yongdamsh/dayjs-reproduce.git
@iamkun Do you have any progress?
@yongdamsh Need some time. Updates: #569 add .weekday
API
@yongdamsh We need to implement some missing methods as a separate plugin. Hope we could finish it in next release.
@yongdamsh would you please give me push permission of your dayjs-reproduce repo?
I use electron-react-boilerplate with ant design. I am trying to replace moment with dayjs. but I have got this error.
I have followed with your instructions.
@ichsarut Hi, a test repo, please?
@ichsarut Hi, a test repo, please?
@iamkun Is there any progress on this comment? And as you know, I solved the issue that can't start the reproduce repo.
@yongdamsh I've tested your repo with dayjs@1.8.15 and seems worked as expected.
Is there any solution for ant design vue
?
Is there any solution for
ant design vue
?
@Vbubblery I haven't tried but should be the same.
在 Ant Design (Antd) 中使用 Day.js 替换 Moment
This is an experimental attempt of replacing Moment.js in Ant Design project (Antd) with Day.js. If your project is not built with Ant Design, you don't have to include all those plugins below.
这是一个实验性的在 Ant Design (Antd) 中使用 Day.js 替换 Moment 的方案,如果你的项目并没有使用 Ant Design 那则不需要引入下面列出的全部插件。
Results 结论
Update: Antd Official doc 更新:antd 官方文档 https://ant.design/docs/react/replace-moment
https://ant.design/docs/react/replace-moment-cn
Only 3 steps to replace Moment.js with Day.js. Bundle size reduced from 65kb -> 4.19 kb. 只需要 3 步就可以快速实现替换,打包体积从 65kb 减小到 4.19 kb
Steps 步骤
Install Day.js 安装 Day.js
Update Webpack config 更新 Webpack 配置 More info 参考 https://github.com/ant-design/antd-dayjs-webpack-plugin
module.exports = { plugins: [ new AntdDayjsWebpackPlugin() ] }
module.exports = { resolve: { alias: { moment: 'dayjs', } } }
//import moment from 'moment'; //moment.locale('zh-cn');
import dayjs from 'dayjs'; import customParseFormat from 'dayjs/plugin/customParseFormat'; import weekOfYear from 'dayjs/plugin/weekOfYear'; import isMoment from 'dayjs/plugin/isMoment'; import badMutable from 'dayjs/plugin/badMutable'; import localeData from 'dayjs/plugin/localeData'; import advancedFormat from 'dayjs/plugin/advancedFormat'; import weekYear from 'dayjs/plugin/weekYear'; import isSameOrBefore from 'dayjs/plugin/isSameOrBefore'; import isSameOrAfter from 'dayjs/plugin/isSameOrAfter'; import 'dayjs/locale/zh-cn';
dayjs.extend(isSameOrBefore); dayjs.extend(isSameOrAfter); dayjs.extend(advancedFormat); dayjs.extend(customParseFormat); dayjs.extend(weekYear); dayjs.extend(weekOfYear); dayjs.extend(isMoment); dayjs.extend(localeData); dayjs.extend(badMutable);
dayjs.locale('zh-cn');