megalo.config.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. const path = require('path');
  2. const fs = require('fs');
  3. module.exports = {
  4. // 构件生产模式时是否生成source map(仅在process.env.NODE_ENV === 'production' 时该选项生效)
  5. productionSourceMap: false,
  6. // 开启eslint格式化代码
  7. lintOnSave: true,
  8. configureWebpack: config => {
  9. // 你可以在这里粗放的修改webpack的配置并返回
  10. return config;
  11. },
  12. chainWebpack: chainConfig => {
  13. chainConfig.plugin('copy-webpack-plugin').tap(args => {
  14. args[0].push({
  15. context: path.resolve('src'),
  16. from: path.resolve('project.config.json'),
  17. to: path.resolve(`dist-${process.env.PLATFORM}/project.config.json`)
  18. });
  19. args[0].push({
  20. context: path.resolve('src'),
  21. from: path.resolve('sitemap.json'),
  22. to: path.resolve(`dist-${process.env.PLATFORM}/sitemap.json`)
  23. });
  24. args[0].push({
  25. context: path.resolve('src'),
  26. from: path.resolve('src/vant'),
  27. to: path.resolve(`dist-${process.env.PLATFORM}/vant`)
  28. });
  29. args[0].push({
  30. context: path.resolve('src'),
  31. from: path.resolve('src/parser'),
  32. to: path.resolve(`dist-${process.env.PLATFORM}/parser`)
  33. });
  34. // let str = /usingComponents:[\W](\{[\w\W]+?\})/
  35. // .exec(fs.readFileSync('src/main.js').toString())[1]
  36. // .replace(/[\s]/g, '')
  37. // .replace(/'/g, '"');
  38. // console.log(str);
  39. // let components = JSON.parse(str);
  40. // Object.keys(components).forEach(key => {
  41. // let from = path.resolve('src', components[key].replace(/^\//, ''), '../');
  42. // let to = path.resolve(`dist-${process.env.PLATFORM}`, components[key].replace(/^\//, ''), '../');
  43. // args[0].push({
  44. // context: path.resolve('src'),
  45. // from,
  46. // to
  47. // });
  48. // console.log(from, to);
  49. // });
  50. return args;
  51. });
  52. chainConfig.module
  53. .rule('less')
  54. .test(/\.less$/)
  55. .use('style-resources-loader')
  56. .loader('style-resources-loader')
  57. .options({
  58. patterns: [path.resolve(__dirname, './src/styles/common.less')]
  59. })
  60. .end();
  61. },
  62. // 原生小程序组件存放目录,默认为src/native
  63. // 如果你有多个平台的原生组件,你应当在此目录下再新建几个子文件夹,我们约定,子文件夹名和平台的名字一致:
  64. // 微信小程序组件则命名为 'wechat',支付宝为'alipay', 百度为 'swan'
  65. // 如果只有一个平台,则无需再新建子文件夹
  66. nativeDir: '/src/native',
  67. css: {
  68. loaderOptions: {
  69. css: {
  70. // https://github.com/webpack-contrib/css-loader#options
  71. },
  72. less: {
  73. // https://github.com/webpack-contrib/less-loader
  74. },
  75. sass: {
  76. // https://github.com/webpack-contrib/sass-loader
  77. },
  78. stylus: {
  79. // https://github.com/shama/stylus-loader
  80. },
  81. // https://github.com/megalojs/megalo-px2rpx-loader
  82. px2rpx: {
  83. rpxUnit: 0.5
  84. }
  85. }
  86. }
  87. };