webpack集成

注:内部webpack插件版本基于webpack@3.12.0开发选择,暂不兼容webpack4。

通过以下步骤,可以让webpack项目中使用chameleon的任意组件。

  • 1 安装npm包 npm i easy-chameleon chameleon-ui-builtin

  • 2 执行脚本 node node_modules/\easy-chameleon/bin/index.js,该脚本会执行检测,安装未安装的第三方npm包

  • 3 .babelrc 的preset 添加flow, chameleon中用了flow语法,如果需要用到chameleon-api,建议配置babel-plugin-chameleon-import插件实现按需加载。例如:

  1. {
  2. "presets": [
  3. "flow",
  4. ["env", {
  5. "targets": {
  6. "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
  7. }
  8. }],
  9. "stage-0"
  10. ],
  11. "plugins": [
  12. "transform-vue-jsx",
  13. "transform-runtime",
  14. [
  15. "babel-plugin-chameleon-import", {
  16. "libraryName": "chameleon-api",
  17. "libraryDirectory": "src/interfaces",
  18. "libraryFileName": "index.js",
  19. "defaulLibraryDirectory": "",
  20. "defaulLibraryFileName": "index.js",
  21. }
  22. ]
  23. ]
  24. }
  • 4 入口代码中,引入代码 import 'easy-chameleon/entry/web_global.js';

  • 5 修改webpack配置文件,easy-chameleon提供了getConfig方法获取webpack配置,利用webpack-merge将项目原有webpack配置与getConfig方法获取的配置进行合并,例如:

  1. const merge = require('webpack-merge')
  2. const {getConfig} = require('easy-chameleon');
  3. devWebpackConfig = merge(devWebpackConfig, getConfig({
  4. cmlType: 'web',
  5. media: 'dev',
  6. hot: true,
  7. disableExtract: false,
  8. context: path.join(__dirname,'../'),
  9. cmss: {
  10. rem: false,
  11. scale: 0.5
  12. }
  13. }))

getConfig方法参数 getConfig(Object object)

参数类型默认值必填说明cmlTypeString是端类型,可选值为web|wx|weexmediaString是构建模式,可选值为dev|buildhotBooleanfalse否是否开启热更新,只在web端生效disableExtractBooleanfalse否不提取css文件cmssObject否cmss处理的配置,参见下方cmss对象属性列表wxConfigObject否微信端构建配置,参见下方wxConfig对象属性列表

cmss 对象属性列表

参数类型默认值必填说明
remBooleantrue否将cpx以75cpx=1rem为标准转换成rem
scaleNumber0.5否当rem为false时,scale将生效,将cpx乘以scale为px

wxConfig 对象属性列表

参数类型默认值必填说明
entryArray[String]是指定输出的组件入口,以项目根目录下的相对路径,会寻找指定路径下的cml文件进行编译
outputPathString否输出路径

示例

详细示例戳这里webpack集成chameleon