1 | # vue 多页面脚手架 2dfire-cli
|
2 |
|
3 | ## 安装
|
4 |
|
5 | ```
|
6 | $ npm install 2dfire-cli -g
|
7 | # OR
|
8 | $ yarn global add 2dfire-cli
|
9 | ```
|
10 |
|
11 | # 所提供的命令
|
12 |
|
13 | ## create:
|
14 |
|
15 | 创建一个由 fire 管理的项目
|
16 |
|
17 | 创建好的项目根目录下默认会创建一个 <a href="#fireconfigjs">fire.config.js</a> , 里面可以为项目配置一些参数,具体参数后面会标明
|
18 |
|
19 | - 启动项目: 在根目录下执行 npm start 或 yarn start
|
20 |
|
21 | - 打包项目: 在根目录下执行 fire build env(环境变量)
|
22 |
|
23 | ```
|
24 | $ fire create my-project
|
25 | ```
|
26 |
|
27 | ## page:
|
28 |
|
29 | 为项目创建一个模板页面,默认提供几种简单的模板供选择
|
30 |
|
31 | 所有的模板都在 gitLab 上: http://git.2dfire-inc.com/danfan/vue-page-boilerplate.git 后续可以增加一些常用模板
|
32 |
|
33 | 你也可以在你的项目根目录下创建 'template' 文件夹,然后在里面按照相同的格式创建自己的模板
|
34 |
|
35 | ```
|
36 | $ fire page my-page
|
37 | ```
|
38 |
|
39 | ## update:
|
40 |
|
41 | 更新项目配置,每次启动项目(start)的时候如果发现配置有更新,就会中断启动项目
|
42 |
|
43 | 你必须更新项目配置才能将项目启动起来,这样做是为了让所有由 fire 管理的项目统一配置
|
44 |
|
45 | 这里不直接内部执行 update 的原因是因为可能有些项目不想升级配置,或者说升级了配置会破坏现有代码的正常运行
|
46 |
|
47 | 当你不想强制更新时,你可以在 <a href="#fireconfigjs">fire.config.js</a> 中配置 checkVersion 为 false,这样就不会去检测配置是否更新,但会始终给出警告,不建议你这样做
|
48 |
|
49 | ```
|
50 | $ fire update
|
51 | ```
|
52 |
|
53 | ## init:
|
54 |
|
55 | 初始化一个不是由 fire-cli 创建的项目,使其可以被 fire 管理.
|
56 |
|
57 | - 项目的目录结构也会被修改成和 fire 生成的项目的目录结构一致.
|
58 |
|
59 | - 不会破坏你项目原本存在的目录结构,但是运行和打包配置将会被 fire 管理,原有的配置将失效
|
60 |
|
61 | - 由于 fire 是基于 webpack3 以上的,所以如果你原本的配置是基于 webpack3 以下的,那么你的业务代码需要注意的地方如下:
|
62 | 1. 所有的 module.exports = 需改为 export default
|
63 | 2. 所有的 require('xxx') 需改为 import xx from 'xx'
|
64 | 3. 按需加载 require.ensure 需改为 import('xxx') 的方式
|
65 | 4. 注意 alias 引用别名,fire 管理的项目 alias 会有所改变,具体看下面的 <a href="#alias">alias</a>
|
66 |
|
67 | ```
|
68 | $ fire init
|
69 | ```
|
70 |
|
71 | ## noble:
|
72 |
|
73 | 在 noble 上部署项目的速度大家也都知道,非常的慢,而部署大部分操作的环境是项目环境
|
74 |
|
75 | 所以 fire 提供这个 noble 命令,可几秒内将你的应用部署到项目环境,只有项目环境可用
|
76 |
|
77 | - 你必须提供项目环境的服务器 ip 地址,比如 ip 地址是 10.11.45.11
|
78 |
|
79 | - 你还必须提供项目名称,不过这个是会自动读取当前项目的 package.json 的 name 字段,不需要你额外配置,
|
80 | 另外如果 name 是以 static-开头的,则会截取 static-后面的字符串作为 name,(这个是为了兼容现有的 static-项目),其他的都直接读取,不会截取,所以这点必须注意
|
81 |
|
82 | - 用这个命令部署之前最好先合并一下代码
|
83 |
|
84 | 明确上诉内容之后你就可以执行
|
85 |
|
86 | ```
|
87 | $ fire noble 10.11.45.11
|
88 | ```
|
89 |
|
90 | 如果不想每次都输入一个 ip 的话,可以在项目根目录下建一个 noble 文件夹,然后在此目录下建一个以你的花名拼音命名的 js 文件,
|
91 | 比如你的花名叫胆矾,那么就建一个 danfan.js,然后里面配置一个 serverIP 如下
|
92 |
|
93 | ```javascript
|
94 | module.exports = {
|
95 | serverIp: '10.11.45.11'
|
96 | }
|
97 | ```
|
98 |
|
99 | 之后只需要执行 fire noble 不再需要跟上 ip 了,此命令最后需要你输入密码,密码请@danfan
|
100 |
|
101 | ```
|
102 | $ fire noble
|
103 | ```
|
104 |
|
105 | ## fire.config.js
|
106 |
|
107 | 根目录下回创建 fire.config.js 来自定义项目配置,具体可配置的选项如下
|
108 |
|
109 | ```javascript
|
110 | //默认的配置
|
111 | module.exports = {
|
112 | //如果你想打包所有页面那么设置: page:'*'
|
113 | page: ['example'],
|
114 | port: 3000,
|
115 | sourceMap: true,
|
116 | //http代理
|
117 | proxy: {},
|
118 | //px2rem:{ remUnit: 37.5 }
|
119 | px2rem: null,
|
120 | //babel-plugin-import按需加载 比如 imports:'iview'
|
121 | imports: null
|
122 | }
|
123 | ```
|
124 |
|
125 | ## local.config.js
|
126 |
|
127 | 另外可能每个人的配置不一样,但是都改这个文件容易冲突,所以每个人可以本地创建一个 local.config.js
|
128 |
|
129 | 这个 js 配置和 fire.config.js 一样,它会覆盖 fire.config.js 的配置,不过这个文件不会被提交到 git 上,只是你自己使用的,
|
130 | 这样就不会冲突了,
|
131 |
|
132 | 注意:在 noble 上打包的时候,noble 无法知道 local.config.js 的存在的,所以 local.config.js 只是在本地开发或者用 fire noble 命令部署的时候才有作用,
|
133 |
|
134 | ## .prettierrc.js
|
135 |
|
136 | 格式化代码的工具,希望大家安装并集成到编辑器中,设置自己喜欢的快捷键进行格式化
|
137 | 使用文档 https://prettier.io/docs/en/install.html
|
138 | 各种编辑器集成方法 https://prettier.io/docs/en/editors.html
|
139 |
|
140 | ## 自定义 webpack.config.js(不建议)
|
141 |
|
142 | 你可以在根目录下创建一个 webpack.config.js 去覆盖合并默认的 webpack 配置
|
143 |
|
144 | ```javascript
|
145 | //webpack.config.js
|
146 | module.exports = function(defaultWebpackConfig, NODE_ENV) {
|
147 | //NODE_ENV is 'start' or 'build'
|
148 | return {
|
149 | //you webpack config
|
150 | }
|
151 | }
|
152 | ```
|
153 |
|
154 | ## 自定义 postcss.config.js(不建议)
|
155 |
|
156 | 和上面一样可以创建 postcss.config.js 加新的插件
|
157 |
|
158 | ```javascript
|
159 | //postcss.config.js
|
160 | module.exports = function(defaultPostcssPlugin, NODE_ENV) {
|
161 | return [
|
162 | //you postcss plugins
|
163 | ]
|
164 | }
|
165 | ```
|
166 |
|
167 | ## 自定义 babel.config.js(不建议)
|
168 |
|
169 | 同理可创建 babel.config.js 去覆盖默认的 babel 配置
|
170 |
|
171 | ```javascript
|
172 | //babel.config.js
|
173 | module.exports = function(defaultBabelConfig) {
|
174 | return {
|
175 | //you babel options
|
176 | }
|
177 | }
|
178 | ```
|
179 |
|
180 | ## alias
|
181 |
|
182 | 访问别名 alias
|
183 |
|
184 | - @env: 不同环境下访问到/src/\_\_BASE\_\_/env 目录下的不同的 js 文件,有 dev、pre、daily、publish,
|
185 |
|
186 | - @static: 访问到/static
|
187 |
|
188 | - /src/\_\_BASE\_\_目录下的所有一级目录全部会被自动建立对应的 alias,以 '@' 符号开头
|
189 |
|
190 | ## 全局变量**ENV**
|
191 |
|
192 | 代码中可以通过\_\_ENV\_\_变量知道当前是处于哪个环境下,其值为字符串 dev、pre、daily、publish 其中之一
|
193 |
|
194 | ## async/await
|
195 |
|
196 | 默认支持 async/await
|
197 |
|
198 | ## 默认集成的依赖及注意事项
|
199 |
|
200 | - 创建的项目默认是集成 vue、vue-router、vuex
|
201 |
|
202 | - 默认集成 less 预处理器,并且为了统一,由 fire 管理的项目只能用 less 预处理器(其他预处理器会报错)
|
203 |
|
204 | - 后续集成我们自己的 UI 库、 utils、网关、接口等。这样一来,大部分项目基本不需要再安装其他依赖了
|
205 |
|
206 | ## React 版(针对 PC 端管理系统等应用)
|
207 |
|
208 | 之后会提供 react 版本的(正在开发),也由此 fire 统一管理,目标:
|
209 |
|
210 | - 只需要了解 JSX,即可很快的构建出项目,
|
211 | - 大部分情况下不用去写 react 的生命周期
|
212 | - 不需要学习 redux 等麻烦的状态管理库,也能轻松的管理状态
|
213 | - 不需要学习 react-router 只需要一个命令 fire route 即可建立路由,视图
|
214 | - 管理系统最多的就是列表、详情,所以期望能实现简单几行代码就能构建复杂列表页
|
215 | - 让你爱上 React
|