构建配置
一般来说,用户配置主要关注 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_ENV
npm
脚手架安装默认使用的 npm 命令行,默认npm
webpack.path
src
[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]
是否生成开发环境下的文件 默认true
webpack.clean
[Boolean]
是否清理生成文件夹webpack.sourceMap
development
[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-plugin
webpack.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
目录进行升级。