UNPKG

silki

Version:

Cli tool for build react app, based on generator-react-multipage, create-react-app, roadhog. Support react multiple pages app develop.

364 lines (241 loc) 6.99 kB
# silk ## 介绍 react app 开发cli工具,包括脚手架以及开发调试功能,支持开发 react 多页面 app。 支持多种css预处理语言,包括 less sass/scss stylus. [View README in English](https://github.com/shaozj/silk/blob/master/README_en-us.md) [view on github](https://github.com/shaozj/silk) ## 下载安装 ```bash $ sudo npm install silki -g ``` ## 使用 > 新建一个 react 应用 ```bash $ silk new $ silk new -r # or $ silk new --remote # 从远程(gitlab)拉取框架代码 ``` > 新建一个页面 ```bash $ silk page <name> ``` > 新建一个独立 h5 组件 ```bash silk new mod ``` > 新建一个组件 ```bash $ silk cpnt <name> ``` > 编译代码(在内存中),并启动 react app 调试服务器 ```bash $ silk server ``` > 编译代码 (在内存中),并启动 h5 组件 调试服务器 ```bash silk server -m ``` > 将代码编译并存储在文件中, 默认在 ./build 目录下 ```bash $ silk build ``` > 编译 h5 组件 ```bash silk buildMod ``` > 生成 vendor.dll.js 文件 ``` $ silk dll ``` > 显示帮助文档 ```bash $ silk -h ``` > 显示版本 ```bash $ silk --version ``` ## 配置 * 配置文件为 **.silkrc** ,在项目的根目录下 * JSON 格式,支持注释 默认配置如下: ```JSON { "entry": "src/pages/**/index.js", "disableCSSModules": false, "publicPath": "/", "outputPath": "./build", "useBabelrc": false, "extraBabelPlugins": [ ["import", [{ "libraryName": "antd", "style": true }]] ], "extraBabelPresets": [ ], "extraPostCSSPlugins": [], "autoprefixer": null, "proxy": null, "externals": null, "multipage": true, "define": null, "env": null, "theme": null, "port": 8000, "dll": false, "dllEntry": [], "noVendor": false, "notClearBuild": false } ``` ### entry `entry` 是一个页面的入口点。`entry` 选项对应了 webpack 配置文件中的 `entry`。参见[webpack entry](https://webpack.js.org/concepts/#entry)。 不同之处是,.silkrc 中,支持 glob 格式的 `entry`。 一个例子如下所示: **.silkrc** ``` { "entry": "src/pages/**/index.js", } ``` ### disableCSSModules 禁用 css modules, 默认为 false. 参见 [css modules](https://github.com/css-modules/css-modules) ### publicPath 设置生产环境下的 publicPath, 开发环境下默认为 '/' . 参见 [webpack output.publicPath](http://webpack.github.io/docs/configuration.html#output-publicpath) ### localPublicPath 在本地开发环境强制设置 publicPath (不设置默认为 '/'),为了能在异步加载 js 的线上环境调试 ### outputPath 设置 output 路径. 参见 [webpack output.path](http://webpack.github.io/docs/configuration.html#output-path) ### useBabelrc 是否使用本工程下的 .babelrc 文件,默认 false 不使用,如果开启使用,那么得在本工程下安装相应的 babel plugins 和 babel presets。 ### extraBabelPlugins 设置额外的 babel 插件。`useBabelrc=false` 时生效。只支持添加, 不支持替换和删除。 下面是添加 babel-plugin-import 插件的例子: **.silkrc** ``` { "extraBabelPlugins": [ ["import", { "libraryName": "antd", "libraryDirectory": "lib", "style": "css" }] ] } ``` ### extraBabelPresets 设置额外的 babel presets。`useBabelrc=false` 时生效。只支持添加, 不支持替换和删除。 **.silkrc** ``` { "extraBabelPresets": ['babel-preset-stage-2'] ] } ``` ### extraPostCSSPlugins 设置额外的 postcss 插件. 目前还未支持. ### autoprefixer 设置 autoprefixer, 参见 [autoprefixer](https://github.com/postcss/autoprefixer) 和 [browserslist](https://github.com/ai/browserslist#queries) 例子: **.silkrc** ``` { "autoprefixer": { "browsers": [ "iOS >= 8", "Android >= 4" ] } } ``` ### proxy 设置代理, 参见 [webpack dev server proxy](https://webpack.github.io/docs/webpack-dev-server.html#proxy) 例子: **.silkrc** ``` { "proxy": [ { "context": ["/common/**", "/tair/**", "/video/**", "/system/**", "/*.do"], "target": "http://mytv-test.alibaba.net", "secure": false } ] } ``` ### externals 设置 webpack externals. 参见 [webpack externals](http://webpack.github.io/docs/configuration.html#externals) ### multipage 是否是多页面应用. 默认为 true. ### define 对应 webpack 中的 DefinePlugin 配置. 值将自动做 JSON.stringify 处理. 参见 [webpack DefinePlugin](http://webpack.github.io/docs/list-of-plugins.html#defineplugin) Example: **.silkrc** ``` { "define": { "PRODUCTION": true, "VERSION": "1.0.0", } } ``` ### env 设置某个环境下的配置. `development` 为开发环境, `production` 为生产环境. 例子: **.silkrc** ``` { "extraBabelPlugins": ["transform-runtime"], "env": { "development": { "extraBabelPlugins": ["dva-hmr"] } } } ``` 配置后, 在开发环境下, `extraBabelPlugins` 为 `["transform-runtime", "dva-hmr"]`, 在生产环境下, `extraBabelPlugins` 为 `["transform-runtime"]`. 注意:如果配置项值为数组或对象,则最终得到配置为合并后的数组或对象,如果配置项的值为字符串等其他类型,则会被 env 中配置的值所替换。 ### theme 设置 antd 主题。 支持对象和表示less文件路径的字符串。 例子: **.silkrc** ``` { "theme": { "@primary-color": "#1DA57A", "@link-color": "#1DA57A", "@border-radius-base": "2px", "@font-size-base": "16px", "@line-height-base": "1.2" } } // or { "theme": "./theme-config.js" } ``` [如何配置 antd 主题](https://ant.design/docs/react/customize-theme) ### port 设置开发服务器的端口. ### dll 是否开启webpack dll功能。默认为 false。如果开启了dll功能,需要先执行一遍 silk dll,生成 vender.dll.js(注意,该指令只需执行一遍)。同时,需要在 template-dev.html 中添加如下代码: `<script src="/vendor.dll.js"></script>` 。之后用 silk server 启动开发调试服务器。 ### dllEntry 要编译到 vendor.dll.js 中的代码,数组。成员为需要编译到 dll 中的库的路径。 例子: ``` { "dllEntry": ["react", "react-dom", "antd", "whatwg-fetch"] } ``` 当 dllEntry 为空时,编译 dll 时,默认要编译库即为 `['react', 'react-dom', 'antd', 'whatwg-fetch']`。 ### noVendor 不提取 vendor.js,默认 false。在希望每个页面独立编译时,设置 true### notClearBuild 每次 build 时不清理 build 目录。默认 false,希望不清理时设为 true### useBabelCmd 使用 babel 直接编译命令 ``` "useBabelCmd": false ``` ## 智能重启 - [x] 修改以下文件,开发服务器会自动重启。 * .silkrc * theme 配置指定的文件 - [x] 新建一个页面时,开发服务器会自动重启。 ## 高级功能 ### Mock ##LICENSE ### MIT