README
"build-storybook": "build-storybook -c .storybook -o .out"
项目创建过程
- 初始化项目
mkdir story
cd story && npm init -y
2. 安装依赖
1. 添加React babel依赖包
npm i --save react react-dom
npm i --save-dev @babel/core babel-loader
2. 创建 tsconfig.json 文件
`tsc --init`
tsconfig.json文件
{ "compilerOptions": { "target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. / "module": "commonjs", / Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. / "lib": ["dom", "es2015", "es2015.promise"], / Specify library files to be included in the compilation. / "jsx": "react", / Specify JSX code generation: 'preserve', 'react-native', or 'react'. / "sourceMap": true, / Generates corresponding '.map' file. / "strict": true, / Enable all strict type-checking options. / "noImplicitAny": true, / Raise error on expressions and declarations with an implied 'any' type. / "baseUrl": "src", / Base directory to resolve non-absolute module names. / "paths": { "@/": ["./"], }, / A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. / "esModuleInterop": true / Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. / }, "include": [ "./src//" ]
### 3. 安装 react 相关依赖包 和相应的ts声明
`npm i -D react react-dom`
`npm i -D #types/react #types/react-dom`
### 4. webpack 以及一些必要的 loader
`npm i -D webpack webpack-cli `
`npm i -D source-map-loader`
`npm i -D less less-loader css-loader style-loader`
// webpack 插件
`npm i -D html-webpack-plugin`
`npm i -D webpack-bundle-analyzer`
`npm i -D clean-webpack-plugin`
> webpack配置文件 webpack.config.js
>
> ```javascript
var fs = require('fs')
var path = require('path')
var webpack = require('webpack')
const { CheckerPlugin } = require('awesome-typescript-loader');
var ROOT = path.resolve(__dirname)
module.exports = {
entry: './src/index.tsx',
devtool: 'source-map',
output: {
path: ROOT + '/dist',
filename: '[name].bundle.js',
sourceMapFilename: '[name].bundle.map.js'
},
module: {
rules: [
{ test: /\.ts[x]?$/, loader: "awesome-typescript-loader" },
{ enforce: "pre", test: /\.ts[x]$/, loader: "source-map-loader" },
{
test: /\.less$/,
include: ROOT + '/src',
use: [
{
loader: 'style-loader'
},
{
loader: 'css-loader'
},
{
loader: 'less-loader'
}
]
},
{
test: /\.png/,
use: [
{
loader: 'url-loader',
options: {
limit: 1024*20
}
}
]
}
]
},
resolve: {
extensions: [".ts", ".tsx", ".js", ".json", ".png"],
alias: {
'@': ROOT + '/src'
}
},
plugins: [
new CheckerPlugin(),
]
}
5. 添加storybook依赖包
npm i --save-dev
@storybook/react
@storybook/addons
@storybook/addon-actions
@storybook/addon-knobs
@storybook/addon-links
@storybook/addon-notes
npm i -D @storybook/addon-info // 此插件比较特殊,不需要提前注册,它可以显示story的源码,并针对props提供一些文档
6. 添加 antd 依赖包
npm i --save antd
npm i --save-dev @storybook/preset-ant-design //storybook-antd 预设置
.storybook/main.js addons数组中添加 '@storybook/preset-ant-design'
7. 添加 typeScript 依赖包
npm i --save-dev typescript tslint tslint-react ts-loader ts-node awesome-typescript-loader
npm i --save-dev @types/react @types/react-dom @types/jest @types/node @types/webpack @types/storybook__react
fork-ts-checker-webpack-plugin
react-docgen-typescript-loader
@storybook/preset-typescript //storybook-typescript 预设置
.storybook/main.js addons数组中添加 '@storybook/preset-typescript'
// 启动开发环境
"storybook": "start-storybook -p 9001 -c .storybook",
// 打包成静态网站资源
"build-storybook": "build-storybook -c .storybook -o .out
发布到npm
发布流程
- 首先注册你的npm帐号
- 命令行执行npm login登录你的npm账号
- 进入你项目目录下npm publish即可完成发布
回撤版本
如果你意外的发布错了包,使用npm unpublish +包名即可删除该包。
npm unpublish ec-comps
如果你想撤回指定版本,执行npm unpublish + 包名@版本号。
npm unpublish chat-react@1.0.0
Tips:npm为了保证包不会影响到使用者,发布的版本只能在24小时内进行撤回。
"webpack": "^4.41.6", "webpack-bundle-analyzer": "^3.6.0", "webpack-cli": "^3.3.11"
"typings": "lib/index.d.ts",
"unpkg": "dist/antd.min.js",
"files": [ "dist", "lib", "es" ], "license": "MIT", "main": "lib/index.js", "module": "es/index.js", "name": "antd",