UNPKG

kef-builder-buffet

Version:

buffet-builder构建工具

57 lines (46 loc) 2.38 kB
'use strict'; const url = require('url'); const path = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const getAllPages = require('../../utils/getAllPages'); const CONST = require('../../utils/const'); const BUILDER_ENV = require('../../utils/env'); const SRC_PATH = CONST.SRC_PATH; const BUILD_PATH = CONST.BUILD_PATH; const CDN_BASE = CONST.CDN_BASE; const BUILD_DEBUG = BUILDER_ENV.BUILD_DEBUG; const BUILD_GIT_GROUP = BUILDER_ENV.BUILD_GIT_GROUP; const BUILD_GIT_PROJECT = BUILDER_ENV.BUILD_GIT_PROJECT; const BUILD_GIT_BRANCH = BUILDER_ENV.BUILD_GIT_BRANCH; const BUILD_DEBUG_PORT = BUILDER_ENV.BUILD_DEBUG_PORT; const BUILD_GIT_VERSION = BUILD_GIT_BRANCH == undefined ? undefined : BUILD_GIT_BRANCH.split(path.sep).pop(); module.exports = function (config, argv) { config.plugins = config.plugins || []; let htmlWebpackPlugins = []; let dirs = getAllPages(argv); dirs.forEach(dir => { // TODO: 后续这里要添加host代码的域名来替代ip // common对cdn的地址与pageDir无关,page级别的js跟dir有关系 // url.resolve以一种 Web 浏览器解析超链接的方式把一个目标 URL 解析成相对于一个基础 URL let cdnBase = url.resolve('//127.0.0.1:' + BUILD_DEBUG_PORT, 'pages/' + dir); let commonBase = '//127.0.0.1:' + BUILD_DEBUG_PORT; // build 环境下引用的路径都要变成 cdn 路径哦 if (!BUILD_DEBUG) { cdnBase = url.resolve(CDN_BASE, BUILD_GIT_GROUP, BUILD_GIT_PROJECT, BUILD_GIT_VERSION, dir); commonBase = url.resolve(CDN_BASE, BUILD_GIT_GROUP, BUILD_GIT_PROJECT, BUILD_GIT_VERSION); } // htmlWebpackPlugin 可以自动的创建 html 文件 动态的引用文件名包含 hash 值得文件 htmlWebpackPlugins.push(new HtmlWebpackPlugin({ buildOptions: { debug: BUILD_DEBUG, resourceBase: cdnBase, resourceCommon: commonBase, }, // filename 单页应用就保持跟编译目录一致 多页需要区分不同page /page/index.html filename: path.join(BUILD_PATH, 'pages', dir, 'index.html'), inject: false, template: path.join(SRC_PATH, 'pages', dir, 'index.html') })); }); config.plugins = config.plugins.concat(htmlWebpackPlugins); }