最近项目用到了ahooks,也顺便试试搭建一个hooks库,ahooks用的是dumi(基于umi)来搭建,本文先尝试从0搭建
从0搭建
这里使用webpack构建
先看看必要的包(不包含eslint, 测试等包)
"dependencies": {
"@babel/core": "^7.14.8",
"@babel/preset-env": "^7.14.8", // es语法转换
"@babel/preset-react": "^7.14.5", // react语法转换
"@babel/preset-typescript": "^7.14.5", // typescript语法转换,这次用ts-loader代替
"babel-loader": "^8.2.2", // babel-loader for webpack
"@types/node": "^12.19.12",
"@types/react": "^16.14.2",
"@types/react-dom": "^16.9.10",
"react": "^17.0.1",
"react-dom": "^17.0.1",
"rimraf": "^3.0.2", // 打包前删除文件
"ts-loader": "^9.2.4", // typescript语法转换
"typescript": "^4.1.3", // typescript包
"uglifyjs-webpack-plugin": "^2.2.0" // 压缩js文件
}
webpack.config.js
这里主要是loader配置,注意loader是从左到右执行的,因此这里是先用ts-loader将ts解析为js,再用babel解析react和es语法
module: {
rules: [
{
test: /\.tsx?$/,
exclude: /node_modules/,
use: ['babel-loader','ts-loader'],
include: [path.resolve('src')]
}
],
},
其中,babel-loader要搭配preset,在.babelrc中设置preset
{
"presets": [
[
"@babel/preset-env",{ // 再转化 ES6 语法
"targets": {
"chrome": "67"
},
"useBuiltIns": "usage"
}
],
"@babel/preset-react" // 先转化 react 语法
// "@babel/preset-typescript"
]
}
打包
"scripts": {
"clean": "rimraf ./lib",
"build": "npm run clean && webpack"
},
使用dumi
todo..
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!