开发一个 React 项目,通常避免不了要去配置 Webpack 和 babel 之类,以支持 commonjs 或 es 模块及各种 es 新语法,及及进行 jsx 语法的转义。当然也可以用 create-react-appp 脚手架快速创建一个 react 项目,但与此同时 create-react-app 常常又显的不太自由。
在配置 webpack 时,看着上百行的 webpack.config.js 是不是很闹心?为了重用是不是在多个项目间各种 ctrl-c -> ctrl-v,整个配置起来还是稍显麻烦,对于新手用户常常更是一头雾水,事实上,最大化重用和简化构建配置也是 dawn 的目标之一。
本文是一篇 Dawn 使用入门文章,介绍如何从「零」开始「手动配置」一个基于 dawn 的 react 工程。
# 1. 安装 NVM
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
# 2. 安装 Node
nvm install 8.6.0
nvm alias default 8.6.0
# 3. 安装 Dawn
npm i dawn -g
创建一个普通的 Node 项目
# 1. 创建项目目录
mkdir react-demo
cd react-demo
# 2. 初始化 package
npm init
安装 react & react-dom
npm i react react-dom --save-dev
用你的编辑器,打开项目根目录,比如 vscode
vscode .
在项目根目录创建 src 目录,并在 src 目录中创建 index.js,并输入如下代码
import React from 'react';
import ReactDOM from 'react-dom';
function App() {
return <div>
Hello Dawn!
</div>;
}
ReactDOM.render(
<App />, document.getElementById('root')
);
在 src/assets 目录,并在 src/assets 目录中创建 index.html,并输入如下代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Hello Dawn!</title>
</head>
<body>
<div id="root"></div>
</body>
</html>
在项目根目录创建 .dawn 目录,并在 .dawn 目录中输入如下配置
build:
- name: clean
- name: webpack
好了,现在构建一下我们的代码吧,执行如下命令
dn build
命令执行完毕,会看到项目根目录多了一个 build 这便是构建结果,简单到想哭吧。
如上配置,在 build 的 pipeline 中添加了 clean 和 webpack 两个中间件,在每次执行 dn build 时,pipeline 中的 clean 会清理 build 目录,然后 webpack 会接着进行构建,并把构构建结果放入 build 目录。
等一下,想要监听文件的「实时构建」?想要一个用于开发的 「 Dev Server 」?想要浏览器「自动同步」?
看下边,配置一下 dev 的 pipeline,在刚刚的 pipe.yml 中加入 dev 配置
build:
- name: clean
- name: webpack
dev:
- name: clean
- name: webpack
watch: true
- name: server
- name: browser-sync
现在我们执行一下如下命令
dn dev
在 dev 的 pipeline 中,我们把 webpack 的 watch 选项打开了,打开后便能监听文件的变化并进行「实时构建」了,接下来的任务交给 server 中间件,它会在构建启动后启动一个静态的 Web Server,默认情况下会自动选择一个「可用端口」,不出意外「浏览器」已经「自动打开」了。
编辑一代码试试,browser-sync 中间件会通知浏览器实时自动刷新页面,在适配不同设备开发时 browser-sync 还会在多个的设备的浏览器中同步。
好了,一个基本的基于 dawn 的 react 工程配置好了。文中提到的 webpack、clean、server、browser-sync,可以关注一下相关文档。
附上一些链接:
(全文完)
修正一句:
「在项目根目录创建 .dawn 目录,并在 .dawn 目录中输入如下配置」
应该为
「在项目根目录创建 .dawn 目录,并在 .dawn 目录中创建 pipe.yml,然后输入如下配置」