webpack-dll.config.js 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. const webpack = require('webpack');
  2. const ExtractTextPlugin = require('extract-text-webpack-plugin');
  3. const dirVars = require('./webpack/dir.config.js');
  4. var path = require('path');
  5. const version = require('./package.json').version;
  6. const argv = require('yargs').argv;
  7. let theme = {
  8. '@primary-color': '#58a3ff',
  9. '@link-color': '#58a3ff'
  10. };
  11. module.exports = (function () {
  12. let staticHost = 'http://172.16.0.254';
  13. // let staticHost = 'http://172.16.0.52';
  14. switch (argv.env.deploy) {
  15. case 'test':
  16. staticHost = 'http://statics.jishutao.com';
  17. break;
  18. case 'prod':
  19. staticHost = 'https://kedejs.jishutao.com';
  20. break;
  21. default:
  22. break;
  23. }
  24. staticHost = staticHost + '/client/' + version + '/';
  25. theme['@icon-url'] = '"' + staticHost + 'css/iconfont/iconfont"'
  26. var dllContext = path.resolve(dirVars.dllDir, './' + argv.env.deploy);
  27. return {
  28. output: {
  29. path: dllContext,
  30. filename: '[name].js',
  31. library: '[name]', // 当前Dll的所有内容都会存放在这个参数指定变量名的一个全局变量下,注意与DllPlugin的name参数保持一致
  32. },
  33. entry: {
  34. dll: [
  35. 'react', 'react-dom', 'antd', 'jquery/src/ajax/xhr.js', 'jquery/src/ajax', 'antd/lib/style'
  36. ],
  37. },
  38. plugins: [
  39. new webpack.DllPlugin({
  40. path: path.resolve(dllContext, 'manifest.json'),
  41. name: '[name]',
  42. context: dirVars.staticRootDir,
  43. /*
  44. 当前Dll的所有内容都会存放在这个参数指定变量名的一个全局变量下,注意与参数output.library保持一致
  45. 指定一个路径作为上下文环境,需要与DllReferencePlugin的context参数保持一致,建议统一设置为项目根目录
  46. 这个配置文件的含义是指将enty中的dll[]中的内容 打包进react.dll.js这个文件中
  47. */
  48. }),
  49. new ExtractTextPlugin({
  50. filename: "[name].css",
  51. disable: false,
  52. allChunks: true
  53. }), // 打包css/less的时候会用到ExtractTextPlugin
  54. new webpack.optimize.UglifyJsPlugin({
  55. minimize: true,
  56. compress: {
  57. warnings: false,
  58. },
  59. }),
  60. new webpack.DefinePlugin({
  61. "process.env": {
  62. NODE_ENV: JSON.stringify("production")
  63. }
  64. })
  65. ],
  66. module: require('./webpack/module.config.js')(theme),
  67. resolve: {
  68. extensions: ['.js', '.jsx']
  69. }
  70. }
  71. })();