config.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. const path = require('path')
  2. const webpack = require('webpack')
  3. const nodeExternals = require('webpack-node-externals')
  4. const isDev = process.argv.indexOf('--develop') >= 0
  5. const isWatch = process.argv.indexOf('--watch') >= 0
  6. const demoSrc = path.resolve(__dirname, './demo')
  7. const demoDist = path.resolve(__dirname, '../miniprogram_dev')
  8. const src = path.resolve(__dirname, '../src')
  9. const dev = path.join(demoDist, 'components')
  10. const dist = path.resolve(__dirname, '../miniprogram_dist')
  11. module.exports = {
  12. entry: ['index', 'lib', 'common/relation', 'common/component'],
  13. isDev,
  14. isWatch,
  15. srcPath: src, // 源目录
  16. distPath: isDev ? dev : dist, // 目标目录
  17. demoSrc, // demo 源目录
  18. demoDist, // demo 目标目录
  19. wxss: {
  20. sass: true,
  21. less: true, // 使用 less 来编写 wxss
  22. sourcemap: false, // 生成 less sourcemap
  23. },
  24. js: {
  25. webpack: true, // 使用 webpack 来构建 js
  26. },
  27. webpack: {
  28. mode: 'production',
  29. output: {
  30. filename: '[name].js',
  31. libraryTarget: 'commonjs2',
  32. },
  33. target: 'node',
  34. externals: [nodeExternals()], // 忽略 node_modules
  35. module: {
  36. rules: [{
  37. test: /\.js$/i,
  38. use: [{
  39. loader: 'thread-loader',
  40. }, {
  41. loader: 'babel-loader',
  42. options: {
  43. cacheDirectory: true,
  44. },
  45. }],
  46. exclude: /node_modules/
  47. }, {
  48. test: /\.ts$/,
  49. exclude: /node_modules/,
  50. use: [{
  51. loader: 'thread-loader',
  52. }, {
  53. loader: 'babel-loader',
  54. options: {
  55. cacheDirectory: true,
  56. },
  57. }, {
  58. loader: 'ts-loader',
  59. options: {
  60. appendTsSuffixTo: [/\.vue$/],
  61. happyPackMode: true,
  62. },
  63. }],
  64. }],
  65. },
  66. resolve: {
  67. modules: [src, 'node_modules'],
  68. extensions: ['.js', '.json'],
  69. },
  70. plugins: [
  71. new webpack.DefinePlugin({}),
  72. new webpack.optimize.LimitChunkCountPlugin({maxChunks: 1}),
  73. ],
  74. optimization: {
  75. minimize: false,
  76. },
  77. devtool: 'source-map', // 生成 js sourcemap
  78. performance: {
  79. hints: 'warning',
  80. assetFilter: assetFilename => assetFilename.endsWith('.js')
  81. }
  82. },
  83. copy: ['./assets', './utils.js','./packages/wxs'], // 将会复制到目标目录
  84. }