1 | # tua
|
2 | tua是一个基于webpack的工作流,集成了下一代开发语言,提供语言层面的支持。
|
3 | 它封装了webpack的复杂度,并集成了webpack使用的最佳实践。
|
4 | 让开发者更加关注业务,而非复杂的配置和工具选择。
|
5 |
|
6 | ## 1. 快速开始
|
7 | 1. 通过 npm 或 yarn 安装tua
|
8 | ```shell
|
9 | npm i -g tua
|
10 | yarn add global tua
|
11 | ```
|
12 | 注意,使用yarn,需要配置环境变量。否则,全局命令不生效。
|
13 | 2. 在项目根目录下执行初始化命令
|
14 | ```shell
|
15 | tua -i
|
16 | ````
|
17 | 此命令会在项目根目录下生成 **tua** 的配置文件`.tuarc`,以及一个简单示例。并自动下载安装所需npm依赖。
|
18 | 可以根据项目需要修改配置。见 `tua` 配置说明。
|
19 | 3. 开始调试
|
20 | ```shell
|
21 | tua -s
|
22 | ```
|
23 | 启动服务器。会自动在浏览器(现在默认是chrome)中打开页面。
|
24 |
|
25 | ## 2. 命令行接口(CLI)
|
26 | ### 2.1. 初始化生成项目模板
|
27 | ```shell
|
28 | tua -i
|
29 | ````
|
30 | 执行后会执行目录下生成简单的项目模板。
|
31 | #### 2.1.1. 模板结构
|
32 | ```
|
33 | + src 代码源文件
|
34 | + lib 公共代码库
|
35 | utils.js 公用的js
|
36 | index.js 入口
|
37 | index.html html模板
|
38 | + test 测试文件
|
39 | add.js 测试文件
|
40 | package.json 包配置文件
|
41 | .tuarc tua配置文件
|
42 | ```
|
43 | #### 2.1.2. 自动下载
|
44 | 在生成package.json后,npm包的自动安装会启动。优先使用yarn安装,如果没有安装则会选择npm。
|
45 |
|
46 | ### 2.2. 生成DLL文件
|
47 | DLL是套用window中动态链接库的概念。
|
48 | DLL的使用,是webpack优化的一部分。
|
49 | 把变化不频繁的部分(如 vue react 的库文件等)打到DLL包中,可以提升调试阶段和发布阶段的编译速度,节省时间,提升效率。
|
50 | 如需了解详情,请自行google,这里不再累述。
|
51 |
|
52 | ```shell
|
53 | tua -d
|
54 | ```
|
55 | 此命令无需手动执行,在使用 `-s` 或 `-p` 时,程序会自动检测是否需要生成或更新 DLL 文件。
|
56 |
|
57 | ### 2.3. 启动本地调试服务器
|
58 | ```shell
|
59 | tua -s
|
60 | ```
|
61 | 启动一个webpack-dev-server,带有热更新。
|
62 | 启动前,会检测是否需要更新 DLL 文件。
|
63 |
|
64 | 默认情况下,webpack-dev-server 提供一个 express 的服务器,在这里,额外提供对 koa 服务器的支持,只需在此命令的末尾添加 `koa`,
|
65 | ```shell
|
66 | tua -s koa
|
67 | ```
|
68 | 以上命令会启动Koa服务器。
|
69 |
|
70 | ### 2.4. 打包
|
71 | #### 2.4.1. 打包到本地
|
72 | ```shell
|
73 | tua -p
|
74 | ```
|
75 | 打包后,资源路径都是本地相对路径,用于本地查看或html和资源部署到同一目录的情况。
|
76 | 打包会同时打包客户端代码和服务端代码,服务端代码入口在 `serverEntry` 配置处设置。见下文详细说明。
|
77 |
|
78 | #### 2.4.2. 打包到服务器
|
79 | ```shell
|
80 | tua -p toserver
|
81 | ```
|
82 | 打包后,资源路径指向 .tuarc 中配置的 `serverUrl`, 用于使用CDN或者html和资源部署到不同路径的情况。
|
83 |
|
84 | ### 2.5. 启动测试
|
85 | ```shell
|
86 | tua -t
|
87 | ```
|
88 | 集成了 `karma + mocha + chai + sinon` 的测试框架。
|
89 | 需配置 .tuarc 中的 `testbase`,默认是 test 文件夹。
|
90 |
|
91 | ### 2.6. 执行js文件
|
92 | ```shell
|
93 | tua --run {filename}
|
94 | ```
|
95 | 此文件中可以调用 tua 的模块,以及 tua 依赖的 npm 包。
|
96 |
|
97 | ## 3. 配置
|
98 | tua 的配置文件 `./.tuarc` 在执行初始化命令之后自动在项目的根路径下生成。
|
99 | .tuarc 是一个正规的 nodejs 模块,暂不支持ES6语法。
|
100 | 以下是每一个配置项的说明。
|
101 |
|
102 | ### 3.1. supportIe{Boolean} deprecated in 0.9.0
|
103 | 打包后的文件是否支持 IE8。默认给出的选项是`false`。
|
104 | IE8 的支持需要一些特殊的库以及 webpack 插件的支持,当选项为`true`时,工作流会自动调整配置,以适应IE8的要求。
|
105 | 注意: IE8的支持不完全,某些 ES6 的属性慎用。另外,如需搭配 vue 等不支持 IE8 的库,请自行查询如何配置loader和插件以提供兼容。
|
106 |
|
107 | 注: 0.9.0 已经不再支持IE8。
|
108 |
|
109 | ### 3.2. cssEnhance {Array<string, object> | string | object }
|
110 | css 增强loader,单个loader配置符合 webpack 标准的loader配置
|
111 |
|
112 | #### 3.2.1. 支持的loader
|
113 | * 内置css loader: sass,postcss,less
|
114 | * 本地安装的 css loader 需要加上 -loader,如使用本地安装特定版本的 postcss, 可配置成 postcss-loader
|
115 |
|
116 | #### 3.2.2. 关于 postcss
|
117 | 默认配置中,postcss使用的插件如下:
|
118 | * postcss-smart-import
|
119 | * precss
|
120 | * autoprefixer
|
121 |
|
122 | 配置文件生成规则如下:
|
123 | 1. 自动生成 .postcssrc.js
|
124 | 默认会根据浏览器环境配置 `env` 在项目根目录下生成 **.postcssrc.js**, 此文件使用 tua 包中默认安装的 postcss插件地址,因此每人机器上配置文件不同,不要上传到版本库。
|
125 |
|
126 | 2. 用户自定义配置 postcss.config.js
|
127 | 用户在定义了 postcss.config.js 的情况下,上述配置文件不会自动生成,如果已经生成,请手动删除,以免造成不确定性的bug。
|
128 |
|
129 | #### 3.2.3. 注意事项
|
130 | 1. 数组对象配置的顺序符合webpack loader加载对象从右向左处理的顺序
|
131 |
|
132 | ### ~~ 3.3. pretty {Boolean | Object}~~
|
133 | 是否在启动 webpack 时,使用[prettier](https://github.com/prettier/prettier)自动格式化代码。
|
134 | 如果需要格式化代码,则`pretty`的值应该是 [prettier](https://github.com/prettier/prettier) 的配置。
|
135 |
|
136 | ### 3.4. enableProfile {Boolean}
|
137 | 是否生成profile文件,profile可用于查看生成块的大小等信息。
|
138 | 如果选是,打包完成后,会自动打开集成的profile工具,可方便的查看每个 chunk 的信息。
|
139 |
|
140 | ### 3.5. env {Object}
|
141 |
|
142 | ```js
|
143 | /**
|
144 | * 定义浏览器环境,babel-preset-env 插件使用的环境
|
145 | * browsers {Array<string> | string} 浏览器支持
|
146 | * 或者 {
|
147 | * debug: {Array<string> | string}, 浏览器支持
|
148 | * publish: {Array<string> | string} 浏览器支持
|
149 | * }
|
150 | * https://github.com/ai/browserslist http://browserl.ist/
|
151 | */
|
152 | browsers: {
|
153 | debug: '',
|
154 | publish: ''
|
155 | }
|
156 | ```
|
157 |
|
158 | 可分别定义debug阶段和发布阶段打包支持的浏览器环境。
|
159 | 在调试阶段把环境设置成固定的(比如 chrome) 可以加快编译速度,减少等待时间。
|
160 |
|
161 | ### 3.6. pageEntrys {Function}
|
162 | 配置项目的入口,重要属性,必须配置。 **路径中注意要统一使用 / , windows 中会使用 \ ,需自行处理**
|
163 | 值需要是一个匿名函数。
|
164 | ```js
|
165 | /**
|
166 | * @param params 用于过滤等功能的cli传过来的参数 两个命令可以传递此参数 tua -s ?params, 或者 tua -p toserver?param / tua -p ?params
|
167 | * @returns {Array}
|
168 | * uri: {String} 访问路径,用于 server.mfs 获取唯一的页面模板。为了解决htmlsrc相同的问题,优先使用router作为map的key,不存在使用htmlsrc
|
169 | * htmlout: {String} 生成后的html文件的路径,相对于 {dist} 路径
|
170 | * htmlsrc: {String} 源html文件模板路径,相对于项目根路径
|
171 | * jssrc: {Array} html文件对应的js入口文件地址, 必须是数组
|
172 | * jsout: {String} html对应的js或css打包后的块名称,只是名称,所有模块打包后 script 会放到 {dist}/scripts/ 下
|
173 | * css会放到 {dist}/styles/ 下
|
174 | * }
|
175 | */
|
176 | pageEntrys: function (params) {
|
177 | return [{
|
178 | uri: '',
|
179 | htmlsrc: '',
|
180 | htmlout: '',
|
181 | jssrc: [''],
|
182 | jsout: ''
|
183 | }];
|
184 | }
|
185 | ```
|
186 | 参数 函数接受一个参数,可以在 `-s` 或 `-p` 阶段,用 `?xxx` 的方式传递过来,常用于优化调试速度,或部分打包上线。默认会打包所有页面。
|
187 | 返回值需要是一组符合上述结构的对象。
|
188 |
|
189 | ### 3.7. html {Object}
|
190 | html-webpack-plugin 中关于html生成的压缩配置。见:[https://github.com/kangax/html-minifier#options-quick-reference](https://github.com/kangax/html-minifier#options-quick-reference)
|
191 |
|
192 | ### 3.8. testbase {String}
|
193 | 测试文件路径
|
194 |
|
195 | ### 3.9. dist {String}
|
196 | 打包代码输出的文件夹路径,需要是绝对路径。
|
197 |
|
198 | ### 3.10. src {String}
|
199 | 代码source路径,缩小loader的处理范围。
|
200 |
|
201 | ### 3.11. assertsLimit {Integer}
|
202 | 大小小于 {assertsLimit}B 的资源,会自动base64到代码中。
|
203 |
|
204 | ### 3.12. serverUrl {String}
|
205 | 执行打包到 toserver 时,静态资源会上传至cdn,此为静态资源文件夹地址。
|
206 |
|
207 | ### 3.13. open {String | Boolean | Object}
|
208 | 是 webpack-dev-server 中 open 和 openPage 的缩写,其中
|
209 |
|
210 | #### 3.13.1. open 设置为浏览器类型
|
211 | ```js
|
212 | open : 'google chrome'
|
213 | ```
|
214 |
|
215 | #### 3.13.2. open设置为布尔值时
|
216 | ```
|
217 | open : false
|
218 | ```
|
219 | 值 false 时,不自动打开浏览器。
|
220 | true时,打开当前服务地址
|
221 |
|
222 | #### 3.13.3. open设置为对象时
|
223 | ```js
|
224 | open : {
|
225 | uri: 'xxx.html',
|
226 | app: 'google chrome'
|
227 | }
|
228 | ```
|
229 |
|
230 | 执行 `-s` 后,启动服务器成功后浏览器打开地址。
|
231 |
|
232 | ** 如果 webpack 的 `devServer` 配置和`open`配置同时存在时,以 `open` 的设置为准,`open`不存在时,以`devServer`的配置为准 **
|
233 |
|
234 | ### 3.14. devServer {Object}
|
235 | ```js
|
236 | {
|
237 | proxy: {
|
238 | "/api": {
|
239 | target: "http://localhost:3000", //代理的服务器地址
|
240 | bypass: function (req, res, proxyOptions) {
|
241 | //过滤器
|
242 | }
|
243 | }
|
244 | },
|
245 | port: 9527
|
246 | }
|
247 | ```
|
248 | 可设置proxy和端口号。
|
249 |
|
250 | ### 3.15. resolve {Object}
|
251 | ```js
|
252 | {
|
253 | /**
|
254 | * 别名配置,可以配置短路径和文件
|
255 | * eg. "jquery" : require("./lib/jquery")
|
256 | */
|
257 | alias: {
|
258 | // "jquery" : require("./lib/jquery")
|
259 | }
|
260 | }
|
261 | ```
|
262 | 可配置别名,如上例为 jquery 配置了别名。
|
263 |
|
264 | ### 3.16. globalVar {Object}
|
265 | 为某些模块配置全局变量。
|
266 | 如:
|
267 | ```js
|
268 | {
|
269 | $: 'jquery'
|
270 | }
|
271 | ```
|
272 |
|
273 | ### 3.17. dllchunk {Object}
|
274 | 配置dll块,至少配置一个,否则会出错。
|
275 | 如:
|
276 | ```js
|
277 | {
|
278 | vendor: ['./src/lib/utils'],
|
279 | // vendor2: ['./lib/kEvent']
|
280 | }
|
281 | ```
|
282 |
|
283 | ### 3.18. serverEntry
|
284 | serverEntry 应该是一个 String 类型的值。
|
285 |
|
286 | ```js
|
287 | serverEntry : './server/index'
|
288 | ```
|
289 | * serverEntry 值存在时,debug阶段会自动启动后台服务,提供server对象给入口文件
|
290 | * 不存在时,同以前开发纯前端输出的形式
|
291 |
|
292 | #### 3.18.1. 入口
|
293 | 入口模块必须默认是一个方法,支持两种形式,es5的模式
|
294 | ```js
|
295 | module.exports=function(server){
|
296 |
|
297 | }
|
298 | ```
|
299 | 或者 es6 模式
|
300 | ```js
|
301 | export default (server)=>{
|
302 |
|
303 | }
|
304 | ```
|
305 |
|
306 | 方法需从 server 对象中获取 router 和 app 等用于创建路由和后台直出。
|
307 | ```js
|
308 | //index.js
|
309 | module.exports = function (server) {
|
310 | const router = server.router;
|
311 | const app = server.app;
|
312 | //koa example
|
313 | router.get('/bbbf', function (ctx) {
|
314 | ctx.type = 'text/html';
|
315 | let htmlcode = server.mfs('/app/index.html', 'utf-8');
|
316 | ctx.body = htmlcode + ' for koa!';
|
317 | })
|
318 | //express example
|
319 | router.get('/bbbc', function (req, res, next) {
|
320 | let htmlcode = server.mfs('/app/index.html', 'utf-8');
|
321 | res.send('for express: ' + htmlcode);
|
322 | })
|
323 | }
|
324 | ```
|
325 |
|
326 | #### 3.18.2. 入口接收的 server 对象
|
327 | debug 阶段的 `server`是`webpackDevServer`的实例,常用到的属性和方法如下
|
328 | ```js
|
329 | {
|
330 | app: {koa or express}
|
331 | router: {koa-router Object or express router Object}
|
332 | mfs: {Function}
|
333 | }
|
334 | ```
|
335 |
|
336 | #### 3.18.3. mfs 方法
|
337 | ```js
|
338 | /**
|
339 | * 读取html模板的代码
|
340 | * @param htmlPath 源代码中,html文件的路径
|
341 | */
|
342 | function mfs(htmlPath){}
|
343 | ```
|
344 | 注意,路径需要以 '/' 开头,对应项目根目录。
|
345 |
|
346 | #### 3.18.4. 使用打包后的服务端文件
|
347 | 打包后,会生成 `dist/server/index.js`, 此文件中不包含服务器创建部分,因此,使用时,需要根据入口文件中使用到的server的属性,创建相应的对象
|
348 |
|
349 | 以使用`koa`为例,boot.js,
|
350 | ```js
|
351 | require('source-map-support').install();//支持 sourcemap
|
352 | const entry = require('./dist/server/index');
|
353 | const Koa = require('koa');
|
354 | const Router = require('koa-router');
|
355 | // 初始化koa实例
|
356 | const app = new Koa(); // eslint-disable-line
|
357 | const router = new Router();//初始化koa router
|
358 |
|
359 | app.use(router.routes()).use(router.allowedMethods()); //绑定路由
|
360 | entry({
|
361 | app: new Koa(),
|
362 | router: new KoaRouter()
|
363 | })
|
364 | ```
|
365 | 其中, `source-map-support` 需要在服务端安装npm包。非必须,不需要可删除。
|
366 |
|
367 | ### 3.19. babelrc
|
368 | ```js
|
369 | /**
|
370 | * {
|
371 | * presets: {Array<string> | string}
|
372 | * plugins: {Array<string> | string}
|
373 | * }
|
374 | */
|
375 | {
|
376 | presets: {Array<string> | string},
|
377 | plugins: {Array<string> | string}
|
378 | }
|
379 | ```
|
380 | 用于扩展 .babelrc,例如,如果需要使用react,需要这么写:
|
381 | ```js
|
382 | {
|
383 | presets: ["react"]
|
384 | }
|
385 | ```
|
386 |
|
387 | ## 4. 进阶
|
388 | ### 4.1. 直接调用 tua 时的参数传递
|
389 | **.tuarc** 配置文件中的 **pageEntry** 方法可以接收一个名为 `params` 的参数:
|
390 | ```js
|
391 | pageEntrys: function (params) {
|
392 | //params可以用于过滤入口和html文件
|
393 | return entryDatas;
|
394 | }
|
395 | ```
|
396 | 这个参数在过滤入口和页面时会显得尤为有用,它可以通过执行 `-s` 或 `-p` 后添加 `?{param}` 来添加
|
397 | ```shell
|
398 | tua -s ?xxx
|
399 | tua -p ?xxx
|
400 | tua -p toserver?xxx
|
401 | ```
|
402 | #### 4.1.1. 调用配置在 npm scripts 中命令的参数传递
|
403 | **npm scripts**中可以很方便的配置命令行,可以结合其他命令,方便调用。
|
404 | 比如:
|
405 | ```js
|
406 | "scripts": {
|
407 | "toserver": "rimraf dist/* .cache-loader/* && tua -p toserver && kcms -c"
|
408 | }
|
409 | ```
|
410 | 但,使用这种方式的时候,无法给**pageEntry**方法传递参数。
|
411 |
|
412 | 为了支持 **npm scripts** 中调用**tua**命令时传递参数,需要设置 **npm** 的参数 `--params`:
|
413 | ```shell
|
414 | npm run toserver --params=xxx
|
415 | ```
|
416 | 这时,.tuarc 中的 pageEntry 方法就会接收到 'xxx'。
|
417 |
|
418 | #### 4.1.2. 使用 koa 作为服务器
|
419 |
|
420 | 默认在webpack-dev-sever中,使用express作为服务器,但加载koa模块会略显复杂。
|
421 |
|
422 | `-s` 在检测到最后一个参数为 `koa` 时,会启用 `koa` 作为服务器。
|
423 |
|
424 | ```shell
|
425 | tua -s koa
|
426 |
|
427 | tua -s ?xxx koa
|
428 | ```
|
429 | 默认增加了对node端sourcemap的支持,方便定位问题。
|
430 |
|
431 | ### 4.2. 设置目标浏览器环境
|
432 | #### 4.2.1. 不区分开发阶段的配置
|
433 | 在 .tuarc 的配置文件中, `env.browsers` 可以用来设置目标浏览器。值可以是 ` {Array<string> | string} `。
|
434 | ```js
|
435 | env:{
|
436 | browsers: {Array<string> | string}
|
437 | }
|
438 | ```
|
439 | #### 4.2.2. 区分测试和发布阶段的配置
|
440 | 一般,在debug模式下,可以只支持chrome就可以完成开发。
|
441 | ```js
|
442 | env:{
|
443 | browsers: {
|
444 | debug: {Array<string> | string},
|
445 | publish: {Array<string> | string}
|
446 | }
|
447 | }
|
448 | ```
|
449 | ### 4.3. 使用工具中的模块
|
450 | #### 4.3.1. 获取当前环境
|
451 | ```js
|
452 | let env = require("@tua/utils/env");
|
453 | console.log(env.DEBUG);
|
454 | console.log(env.PUBLISH);
|
455 | console.log(env.TOSERVER);
|
456 | ```
|
457 | 以上方式可以获取当前是处于 `DEBUG`,`PUBLISH`,`TOSERVER` 的状态,方便自助扩展webpack使用。
|
458 |
|
459 | #### 4.3.2. 自定义启动文件
|
460 | 执行命令
|
461 | ```shell
|
462 | tua --run start.js
|
463 | ```
|
464 | start.js
|
465 | ```js
|
466 | let tua = require("@tua");
|
467 | tua.start();
|
468 | ```
|
469 | 以上代码可以启动 `dev server`。
|
470 | 可用的 tua API,见下面部分。
|
471 |
|
472 | ## 5. API
|
473 | ### 5.1. .DLL(suc, fail)
|
474 | 根据 __tua.js__ 中的配置,生成 __dll__ 文件。
|
475 | ##### 5.1.1. suc
|
476 | 生成dll文件成功后的回调
|
477 | ##### 5.1.2. fail
|
478 | 生成dll失败后的回调
|
479 |
|
480 | `suc`和`fail`都是可选参数。
|
481 |
|
482 | ### 5.2. .start(params, callback, spinner)
|
483 | 启动服务器
|
484 | ##### 5.2.1. params
|
485 | 参数,可用于过滤入口
|
486 | ##### 5.2.2. callback
|
487 | 启动服务器成功后的回调
|
488 | ##### 5.2.3. spinner
|
489 | webpack的devserver启动中,需要此对象展示阶段性信息,不传默认不展示。
|
490 |
|
491 | 三个参数都是可选。
|
492 |
|
493 | ### 5.3. .pack(stat, params, suc, fail)
|
494 | 打包发布项目
|
495 | ##### 5.3.1. stat
|
496 | PUBLISH TOSERVER 两种选一,不传默认是PUBLISH
|
497 | ##### 5.3.2. params
|
498 | 参数,可用于过滤入口
|
499 | ##### 5.3.3. suc
|
500 | 成功回调
|
501 | ##### 5.3.4. fail
|
502 | 失败后的回调
|
503 |
|
504 | 四个参数都是可选。
|
505 |
|
506 | ## CHANGELOG
|
507 | ### 2018-03-27 v0.8.26
|
508 | * 支持异步加载块 import()
|
509 |
|
510 | ### 2018-03-26 v0.8.25
|
511 | * uglify 压缩打包默认输出 sourcemap
|
512 |
|
513 | ### 2018-03-15 v0.8.23
|
514 | * 增加测试阶段服务端(node)sourcemap 支持
|
515 | * 增加服务端线上环境 sourcemap 支持
|
516 |
|
517 | ### 2017-11-20 v0.8.19
|
518 | * 开发模式兼容 windows
|
519 | * loader配置路径兼容 windows /转为\
|
520 |
|
521 | ### 2017-11-16 v0.8.18
|
522 | * 解决使用 server.mfs 方法时,因 webpack 未打包好html文件造成的时序问题
|
523 | * 更新 webpack-dev-server
|
524 |
|
525 | ### 2017-11-15 v0.8.17
|
526 | * 解决 pageEntrys 中 htmlsrc 使用同样的模板,导致 server.mfs 无法通过源路径找到生成的html的问题
|
527 |
|
528 | ### 2017-11-8 v0.8.15
|
529 | * 解决 .cache-loader 找不到的时序问题
|
530 |
|
531 | ### 2017-11-2 v0.8.14
|
532 | * node端代码打包也支持profile查看打包后的模块了
|
533 | * 解决服务端代码external外部模块找不到模块的问题
|
534 |
|
535 | ### 2017-11-1 v0.8.13
|
536 | * 修复了路由挂载post请求无效的问题。
|
537 | serve-index 会过滤掉所有的非 `GET` 和 `HEAD` 请求,需要在此之前处理 koa-router 的挂载
|
538 |
|
539 | ### 2017-10-30 v0.8.12
|
540 | * 调整了koa router中间件的挂载位置,使不影响koa其他中间件的挂载(setup和before等)
|
541 | * 更换了koa中的 connect-history-api-fallback
|
542 |
|
543 | ### 2017-10-30 v0.8.10
|
544 | * 优化了对模板html的读取,现抽象出 server.mfs 方法用于读取html文件
|
545 |
|
546 | ### 2017-10-24 v0.8.7
|
547 | * dll 文件自动插入html,无需再手动引用
|
548 |
|
549 | ### 2017-10-19 v0.8.4
|
550 | * serverEntry 模块支持 es6 的 export default 形式
|
551 |
|
552 | ### 2017-10-19 v0.8.1
|
553 | * webpack-dev-server 增加配置,支持在使用webpack--dev-middleware 之前和之后配置中间件
|
554 |
|
555 | ### 2017-10-18 v0.8.0
|
556 | * 支持 SSR, 服务端 js 支持热更新
|
557 | * webpack-dev-sever 扩展支持 Koa2
|
558 |
|
559 | ### 2017-08-09 v0.7.3
|
560 | * 更新依赖库版本
|
561 | * 更新webpack-dev-server到2.8.0
|
562 |
|
563 | ### 2017-08-09 v0.7.0
|
564 | * 修复windows下项目配置文件tua.js在命令执行时会被系统默认打开的问题,改为更加合理的 .tuarc,tua命令在windows下会优先打开同名文件
|
565 | **注意: 旧项目中的 tua.js 会被自动重新命名为 .tuarc,请注意提交 .tuarc 到代码仓库。**
|
566 |
|
567 | ### 2017-08-03 v0.6.5
|
568 | * 增强 cssEnhance 配置的能力,支持本地css loader,支持自定义postcss配置
|
569 |
|
570 | ### 2017-08-02 v0.6.4
|
571 | * 修复 postcss 配置文件在 windows 中的生成的路径问题
|
572 |
|
573 | ### 2017-07-31 v0.6.3
|
574 | * 去掉 webpack-chunk-hash 插件,此插件会导致内容不同的 manifest 文件名重名问题
|
575 |
|
576 | ### 2017-07-26 v0.6.1
|
577 | * webpack 版本升级到 v3.4.1
|
578 | * uglify 版本升级到 v3.0.6
|
579 | * extract-text-webpack-plugin 版本升级到 v3.0.0
|
580 |
|
581 | ### 2017-07-26 v0.5.29
|
582 | 紧急修复 chunk-manifest-webpack-plugin v1.1.1 版本带来的 bug,暂时固定版本到 1.1.0
|
583 | error 如下:
|
584 | ```shell
|
585 | ERROR in chunk manifest [entry]
|
586 | scripts/[name]_[chunkhash]_aaa.js
|
587 | Chunk.entry was removed. Use hasRuntime()
|
588 | ```
|