Skip to content

Commit

Permalink
Workbox3 (#194)
Browse files Browse the repository at this point in the history
升级为 workbox3
  • Loading branch information
easonyq committed Aug 27, 2018
1 parent d3cb24c commit 195e9ec
Show file tree
Hide file tree
Showing 17 changed files with 181 additions and 149 deletions.
3 changes: 0 additions & 3 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@ node_js:
- "6.9"
- "7"
- "8"
cache:
directories:
- node_modules
os:
- linux
install:
Expand Down
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,18 @@

=======

## Lavas-core-vue [1.2.0] - 2018-8-27

__BREAK CHANGE__

- [Upgrade] 升级 Workbox 依赖到 3.x,__同时不再支持 2.x 的模板语法__
* 模板 (`core/service-worker.js`) 的修改方法见 [#188](https://github.com/lavas-project/lavas/issues/188)
* 对于升级了 lavas-core-vue 但是仍然使用旧版本模板的用户,Lavas 会弹出升级的提示
* 如果想继续使用 workbox 2.x,可以把 lavas-core-vue 的版本固定在 1.1.x (1.1.13 是最后一个版本)
- [Feature] 增加 Service Worker 的启用/禁用功能,并且 __默认禁用__。需要在 `lavas.config.js``serviceWorker` 配置项增加 `enable: true` 来开启该功能
- [Upgrade] 将命令行输出的日志提示修改为中文
- [Fix] 将依赖的 workbox-chain 的版本号固定在 `4.8.0`,因为新版本会出现不稳定的错误

## Lavas-core-vue [1.1.12] - 2018-4-27

- [Fix] Fix a problem causing rendering failure ([#147][i147])
Expand Down
13 changes: 6 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"build:lavas-core-vue": "babel packages/lavas-core-vue/core --out-dir packages/lavas-core-vue/dist --copy-files",
"build:lavas-cli": "babel packages/lavas-cli/src --out-dir packages/lavas-cli/dist --copy-files",
"lint": "fecs ./ --rule --type 'vue,js,css'",
"test": "rimraf packages/lavas-core-vue/test/temp && nyc ava -v",
"test": "rimraf packages/lavas-core-vue/test/temp && nyc ava",
"nyc:report": "nyc report --reporter=html",
"publish:lavas-core-vue": "lerna publish --scope=lavas-core-vue"
},
Expand Down Expand Up @@ -89,17 +89,15 @@
"koa-mount": "^3.0.0",
"koa-send": "^4.1.1",
"koa-static": "^4.0.1",
"lavas-core-vue": "^1.0.7",
"lerna": "^2.5.1",
"lodash": "^4.17.4",
"lodash.template": "^4.4.0",
"lodash.uniq": "^4.5.0",
"mz": "^2.7.0",
"optimize-css-assets-webpack-plugin": "^3.0.0",
"ora": "^1.3.0",
"path-to-regexp": "^2.1.0",
"progress-bar-webpack-plugin": "^1.10.0",
"postcss-loader": "^2.1.3",
"progress-bar-webpack-plugin": "^1.10.0",
"querystring": "^0.2.0",
"request": "^2.83.0",
"request-promise": "^4.2.1",
Expand All @@ -111,7 +109,7 @@
"stylus": "^0.54.5",
"stylus-loader": "^3.0.1",
"super-json": "^2.2.0",
"sw-register-webpack-plugin": "^1.0.17",
"sw-register-webpack-plugin": "^1.0.20",
"uglifyjs-webpack-plugin": "^1.1.6",
"url-loader": "^0.5.9",
"vue": "^2.5.2",
Expand All @@ -124,11 +122,11 @@
"vuex": "^2.3.1",
"webpack": "^3.6.0",
"webpack-bundle-analyzer": "^2.8.2",
"webpack-chain": "^4.5.0",
"webpack-chain": "4.8.0",
"webpack-dev-middleware": "^1.12.0",
"webpack-hot-middleware": "^2.19.0",
"webpack-node-externals": "^1.6.0",
"workbox-webpack-plugin": "2.1.2"
"workbox-webpack-plugin": "^3.4.1"
},
"devDependencies": {
"ava": "^0.18.2",
Expand All @@ -151,6 +149,7 @@
"express": "^4.16.2",
"fecs": "^1.4.0",
"koa": "^2.5.0",
"lerna": "^2.5.1",
"nyc": "^10.3.2",
"rimraf": "^2.6.2",
"semver": "^5.4.1",
Expand Down
8 changes: 4 additions & 4 deletions packages/lavas-core-vue/core/builder/dev-builder.js
Original file line number Diff line number Diff line change
Expand Up @@ -151,17 +151,17 @@ export default class DevBuilder extends BaseBuilder {
let clientMFS;
let ssrEnabled = this.config.build.ssr;

Logger.info('build', 'start compiling routes...', true);
Logger.info('build', '自动生成路由规则...', true);
await this.routeManager.buildRoutes();
Logger.info('build', 'compiling routes completed.', true);
Logger.info('build', '路由规则生成完成', true);

Logger.info('build', 'start writing files to /.lavas...', true);
Logger.info('build', '写入临时文件', true);
await this.writeRuntimeConfig();
await this.writeFileToLavasDir(
BUILD_SCRIPT,
readFileSync(join(__dirname, `../templates/${BUILD_SCRIPT}`))
);
Logger.info('build', 'writing files to /.lavas completed', true);
Logger.info('build', '临时文件写入完成', true);

// write middleware.js & store.js
await this.writeMiddleware();
Expand Down
33 changes: 23 additions & 10 deletions packages/lavas-core-vue/core/builder/prod-builder.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@
* @author lavas
*/

import {emptyDir, outputFile, copy} from 'fs-extra';
import {emptyDir, outputFile, copy, remove} from 'fs-extra';
import {join} from 'path';

import {CONFIG_FILE} from '../constants';
import {copyWorkboxLibraries} from 'workbox-build';
import glob from 'glob'
import {CONFIG_FILE, ASSETS_DIRNAME_IN_DIST} from '../constants';
import {webpackCompile} from '../utils/webpack';
import {distLavasPath} from '../utils/path';
import Logger from '../utils/logger';
Expand All @@ -23,24 +25,25 @@ export default class ProdBuilder extends BaseBuilder {
* build in production mode
*/
async build() {
let {build, globals} = this.config;
let {build, globals, serviceWorker} = this.config;
let serviceWorkerEnable = serviceWorker.enable

// clear dist/ first
Logger.info('build', `start clearing ${build.path}...`, true);
Logger.info('build', `准备清理 ${build.path}...`, true);
await emptyDir(build.path);
Logger.info('build', `${build.path} cleared.`, true);
Logger.info('build', `${build.path} 清理完成`, true);

Logger.info('build', 'start compiling routes...', true);
Logger.info('build', '自动生成路由规则...', true);
await this.routeManager.buildRoutes();
Logger.info('build', 'compiling routes completed.', true);
Logger.info('build', '路由规则生成完成', true);

Logger.info('build', 'start writing files to /.lavas...', true);
Logger.info('build', '写入临时文件', true);
await Promise.all([
this.writeRuntimeConfig(),
this.writeMiddleware(),
this.writeStore()
])
Logger.info('build', 'writing files to /.lavas completed', true);
]);
Logger.info('build', '临时文件写入完成', true);

// SSR build process
if (build.ssr) {
Expand All @@ -52,6 +55,11 @@ export default class ProdBuilder extends BaseBuilder {
// build bundle renderer
await this.renderer.build(clientConfig, serverConfig);

// serviceWorker.enable maybe changed during setting webpack config
if (serviceWorker.enable !== serviceWorkerEnable) {
await this.writeRuntimeConfig()
}

/**
* when running online server, renderer needs to use template and
* replace some variables such as meta, config in it. so we need
Expand Down Expand Up @@ -86,5 +94,10 @@ export default class ProdBuilder extends BaseBuilder {
else {
await webpackCompile(await this.createSPAConfig(), build.stats);
}

if (serviceWorker.enable !== false) {
// Copy workbox files to dist/static/workbox-v3.*.*/
await copyWorkboxLibraries(join(build.path, ASSETS_DIRNAME_IN_DIST));
}
}
}
17 changes: 10 additions & 7 deletions packages/lavas-core-vue/core/config-reader.js
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,9 @@ const DEFAULT_CONFIG = {
server: [],
client: []
},
serviceWorker: null,
serviceWorker: {
enable: false
},
production: {
build: {
cssExtract: true,
Expand Down Expand Up @@ -123,6 +125,7 @@ export const RUMTIME_ITEMS = {
router: true,
errorHandler: true,
serviceWorker: {
enable: true,
swDest: true
},
skeleton: true
Expand Down Expand Up @@ -164,7 +167,7 @@ export default class ConfigReader {

// read from custom config
if (this.customConfigPath) {
Logger.info('build', `read custom config: ${this.customConfigPath}...`, true);
Logger.info('build', `读取自定义配置: ${this.customConfigPath}...`, true);
delete require.cache[require.resolve(this.customConfigPath)];

let customConfig = await import(this.customConfigPath);
Expand All @@ -177,19 +180,19 @@ export default class ConfigReader {
// read from lavas.config.js
let singleConfigPath = join(this.cwd, LAVAS_CONFIG_FILE);
if (await pathExists(singleConfigPath)) {
Logger.info('build', 'read lavas.config.js...', true);
Logger.info('build', '读取 lavas.config.js...', true);
delete require.cache[require.resolve(singleConfigPath)];

let singleConfig = await import(singleConfigPath);
this.mergeEnv(singleConfig);
merge(config, singleConfig, mergeArray);

Logger.info('build', 'reading config completed.', true);
Logger.info('build', '读取配置完成', true);
return config;
}

// read from config/
Logger.warn('build', 'config directory is deprecated! Try to use lavas.config.js instead.');
Logger.warn('build', 'config 目录读取配置已经过时,请尝试把配置写到 lavas.config.js ');
let configDir = join(this.cwd, 'config');
let files = glob.sync(
'**/*.js', {
Expand Down Expand Up @@ -237,10 +240,10 @@ export default class ConfigReader {
* @return {Object} config
*/
async readConfigFile() {
Logger.info('build', 'start reading config...', true);
Logger.info('build', '开始读取配置...', true);
let parsedConfig = JsonUtil.parse(await readFile(distLavasPath(this.cwd, CONFIG_FILE), 'utf8'));
parsedConfig.globals = {rootDir: this.cwd};
Logger.info('build', 'finish reading config.', true, true);
Logger.info('build', '配置读取完成', true, true);
return parsedConfig;
}
}
1 change: 1 addition & 0 deletions packages/lavas-core-vue/core/middlewares/express-error.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
* @file expressError.js, error handler middleware for express
* @author lavas
*/
/* istanbul ignore file */

/**
* generate error middleware
Expand Down
1 change: 1 addition & 0 deletions packages/lavas-core-vue/core/middlewares/koa-error.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
* @file koaError.js, error handler middleware for koa
* @author lavas
*/
/* istanbul ignore file */

/**
* generate error middleware
Expand Down
1 change: 1 addition & 0 deletions packages/lavas-core-vue/core/middlewares/static.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
* @file staticMiddlewareFactory.js
* @author lavas
*/
/* istanbul ignore file */

/**
* remove publicPath in urls of static files
Expand Down
6 changes: 4 additions & 2 deletions packages/lavas-core-vue/core/utils/template.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import template from 'lodash.template';
import fs from 'fs-extra';
import path from 'path';
import Logger from './logger'

const serverTemplatePath = fs.readFileSync(path.resolve(__dirname, '../templates/server.html.tmpl'));
const clientTemplatePath = fs.readFileSync(path.resolve(__dirname, '../templates/client.html.tmpl'));
Expand All @@ -18,8 +19,9 @@ function inner(customTemplate, ssr, baseUrl) {
return template(customTemplate)({ssr}).replace(/<</g, '<%').replace(/>>/g, '%>');
}

console.log('[Lavas] core/index.html.tmpl deprecated! '
+ 'See https://lavas.baidu.com/guide/v2/advanced/core#indexhtmltmpl for more infomation');
Logger.warn('build', 'core/index.html.tmpl 已经过期')
Logger.warn('build', '您可以查看 https://lavas.baidu.com/guide/v2/advanced/core#indexhtmltmpl 获得更多信息\n');

let templatePath = ssr ? serverTemplatePath : clientTemplatePath;
let useCustomOnlyFlag = false;
let renderMetaFlag = false;
Expand Down
Loading

0 comments on commit 195e9ec

Please sign in to comment.