构建配置
一般来说,用户配置主要关注 config/project.js 和 config/steamer.config.js 文件就可以了。
steamer.config.js
steamer-plugin-kit 脚手架管理使用时,所要求填写的配置项目,一律生成为此文件内容。主要是存放一些关键构建变量。
webserver[必填][String]html的链接cdn[必填][String]cdn的链接cssCdn[选填][String]css cdn的链接,默认值为cdn的值imgCdn[选填][String]image cdn的链接,默认值为cdn的值port[必填][String|Integer]开发环境服务器端口route[选填][String|Array]开发环境访问的路径api-port[选填][String|Integer]后台服务访问的端口,一般是Mock数据服务api-route[选填][Array]后台访问的路径,一般是Mock数据服务
project.js
快捷配置
便于用户快速去进行一些 webpack 的配置
env环境配置,源于process.env.NODE_ENVnpm脚手架安装默认使用的 npm 命令行,默认npmwebpack.pathsrc[String]源目录dev[String]开发生成目录dist[String]生产上线目录sprite[String]合图目录distCdn[String]生产上线目录下的cdn资源,如js,css,img等资源distWebserver[String]生产上线目录下的html
webpack.webserver[String] html的链接,值来源于 steamer.config.jswebpack.cdn[String] cdn的链接,值来源于 steamer.config.jswebpack.port[String|Integer] 开发环境服务器端口,值来源于 steamer.config.jswebpack.route[Array] 开发环境访问的路径webpack.api-port[String|Integer] 后台转发端口,值来源于 steamer.config.jswebpack.api-route[Array] 后台转发路径,值来源于 steamer.config.jswebpack.showSource[Boolean]是否生成开发环境下的文件 默认truewebpack.clean[Boolean]是否清理生成文件夹webpack.sourceMapdevelopment[String]开发环境sourcemapproduction[String]生产环境sourcemap
webpack.cssSourceMap[Boolean]css sourcemapwebpack.js[Array]javascript 方言,目前仅 react 支持 ts(typescript)webpack.style[Array]支持样式的loader,["css", "less", "stylus", "scss", "sass"], 默认支持css 和 less. sass, scss 和 stylus 若使用,会自动安装相应依赖webpack.extractCss[Boolean]生产环境是否提取csswebpack,cssModule[Boolean]是否启用css模块化webpack.spriteMode[String]合图,normal (仅1倍图) , retinaonly (仅2倍图), retina (包括1倍及2倍图)webpack.spriteStyle[String]合图样式, 默认支持less. sass, scss 和 stylus 若使用,会自动安装相应依赖webpack.template[Array]html模板,["html", "pug", "handlebars", "ejs"], 默认支持html 和 ejs, handlebars 和 pug 由npm-install-webpack-plugin自动安装webpack.promise[Boolean]是否注入es6-promise包webpack.compress[Boolean]生产环境下资源是否压缩webpack.static[Array]不经webpack打包的资源
static: [
{
src: "libs/",
hash: true,
}
]
webpack.injectVar[Object]利用DefinePlugin给应用注入变量
injectVar: {
"process.env": {
NODE_ENV: JSON.stringify(__env)
}
}
webpack.alias[Object]webpack resolve.alias 包别名webpack.hash[String]webpack hash,主要用于file-loader,copy-webpack-plugin等等webpack.chunkhash[String]webpack chunkhash, 主要用于 js 文件webpack.contenthash[String]webpack content hash,主要用于extract-text-webpack-pluginwebpack.hashName[String]webpack hash 文件名webpack.chunkhashName[String]webpack chunkhash 文件名webpack.contenthashName[String]webpack contenthash 文件名webpack.entry[Object]对应是 webpack 的 entry 配置
// 根据约定,自动扫描js entry,约定是src/page/xxx/main.js 或 src/page/xxx/main.jsx
// 获取结果示例
{
'js/index': [path.join(configWebpack.path.src, "/page/index/main.js")],
'js/spa': [path.join(configWebpack.path.src, "/page/spa/main.js")],
'js/pindex': [path.join(configWebpack.path.src, "/page/pindex/main.jsx")],
}
webpack.html[Array]webpack entry 对应生成的 html 文件
// 自动扫描html,配合html-res-webpack-plugin
// 获取结果示例
[
{
key: 'index',
path: 'path/src/page/index/index.html'
},
{
key: 'spa',
path: 'path/src/page/spa/index.html'
},
{
key: 'pindex',
path: 'path/src/page/pindex/index.html'
}
]
webpack.sprites[Array]生成的合图文件
// 自动扫描合图,配合webpack-spritesmith插件
// 获取结果示例
[
{
key: 'btn',
path: 'path/src/img/sprites/btn'
},
]
高级配置
用函数式的写法进行 webpack 配置
custom.getOutput[Function]webpack output 配置custom.getModule[Function]webpack module 配置custom.getResolve[Function]webpack resolve 配置custom.getPlugins[Function]webpack plugins 配置custom.getExternals[Function]webpack externals 配置custom.getOtherOptions[Function]webpack 剩余的其它配置
webpack-merge 策略配置
project.js 和 webpack.base.js 的配置是通过 webpack-merge 进行合并的,这里提供了两个配置项目,让你定义自己的合并策略:
webpackMerge.smartStrategyOption[Object]webpack-merge smartStrategy 配置webpackMerge.mergeProcess[Function]定制配置的函数- 参数 webpackBaseConfig
[Object]webpack.base.js的配置 - 返回 处理后的 配置
- 参数 webpackBaseConfig
webpack.base.js
如果在 project.js 的配置项都无法满足你,那你可以在 tools/webpack.base.js 进行配置修改。但注意,tools 目录是非必要,尽量减少修改,是因为脚手架升级的时候,会对整个 tools 目录进行升级。