webpack.config.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640
  1. const path = require('path');
  2. const HtmlWebpackPlugin = require('html-webpack-plugin');
  3. /*const HtmlWebpackInlineSourcePlugin=require('html-webpack-inline-source-plugin');*/
  4. const CleanWebpackPlugin = require('clean-webpack-plugin') // 清空打包目录的插件
  5. const MiniCssExtractPlugin = require('mini-css-extract-plugin');
  6. const CopyWebpackPlugin = require('copy-webpack-plugin');
  7. const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
  8. const webpack = require('webpack');
  9. // const proxyHost = "http://192.168.2.236:5858";
  10. const proxyHost = "http://192.168.2.241:5858";
  11. // const proxyHost = "http://192.168.3.117:5858";//铁钢
  12. // const proxyHost = "http://192.168.3.113:5858";//王峰
  13. module.exports = {
  14. entry: {
  15. index: path.resolve(__dirname, 'src/js', 'index.js'),
  16. qcScore:path.resolve(__dirname, 'src/js', 'qcScore.js'),
  17. login:path.resolve(__dirname, 'src/js', 'login.js'),
  18. console:path.resolve(__dirname, 'src/js', 'console.js'),
  19. deptConsole:path.resolve(__dirname, 'src/js', 'deptConsole.js'),
  20. moduleManager: path.resolve(__dirname, 'src/js', 'moduleManager.js'),
  21. itemManager: path.resolve(__dirname, 'src/js', 'itemManager.js'),
  22. qcList: path.resolve(__dirname, 'src/js', 'qcList.js'),
  23. qcListDocteam:path.resolve(__dirname, 'src/js', 'qcListDocteam.js'),
  24. qcListDept:path.resolve(__dirname, 'src/js', 'qcListDept.js'),
  25. qcListPerson:path.resolve(__dirname, 'src/js', 'qcListPerson.js'),
  26. userManager: path.resolve(__dirname, 'src/js', 'userManager.js'),
  27. roleManager: path.resolve(__dirname, 'src/js', 'roleManager.js'),
  28. tiaomu: path.resolve(__dirname, 'src/js', 'tiaomu.js'),
  29. mukuai: path.resolve(__dirname, 'src/js', 'mukuai.js'),
  30. abnormal: path.resolve(__dirname, 'src/js', 'abnormal.js'),
  31. partDetail: path.resolve(__dirname, 'src/js', 'partDetail.js'),
  32. dayDetail: path.resolve(__dirname, 'src/js', 'dayDetail.js'),
  33. payDetail: path.resolve(__dirname, 'src/js', 'payDetail.js'),
  34. deptScoreDetail: path.resolve(__dirname, 'src/js', 'deptScoreDetail.js'),
  35. deptScoreDetailControl: path.resolve(__dirname, 'src/js', 'deptScoreDetailControl.js'),
  36. jiaji: path.resolve(__dirname, 'src/js', 'jiaji.js'),
  37. partDetailControl: path.resolve(__dirname, 'src/js', 'partDetailControl.js'),
  38. quexianXQ: path.resolve(__dirname, 'src/js', 'quexianXQ.js'),
  39. quexianDetail: path.resolve(__dirname, 'src/js', 'quexianDetail.js'),
  40. quexianDetailControl: path.resolve(__dirname, 'src/js', 'quexianDetailControl.js'),
  41. quexianDetailHome: path.resolve(__dirname, 'src/js', 'quexianDetailHome.js'),
  42. quexianDetailControlHome: path.resolve(__dirname, 'src/js', 'quexianDetailControlHome.js'),
  43. mukuaiControl: path.resolve(__dirname, 'src/js', 'mukuaiControl.js'),
  44. tiaomuControl: path.resolve(__dirname, 'src/js', 'tiaomuControl.js'),
  45. assertType: path.resolve(__dirname, 'src/js', 'assertType.js'),
  46. assertTypeDetail: path.resolve(__dirname, 'src/js', 'assertTypeDetail.js'),
  47. singleVeto:path.resolve(__dirname, 'src/js', 'singleVeto.js'),
  48. itemDefectDetail:path.resolve(__dirname, 'src/js', 'itemDefectDetail.js'),
  49. keyItemFlawControl:path.resolve(__dirname, 'src/js', 'keyItemFlawControl.js'),
  50. vendor: 'lodash'// 多个页面所需的公共库文件,防止重复打包带入
  51. },
  52. output: {
  53. publicPath: '/', //这里要放的是静态资源CDN的地址
  54. path: path.resolve(__dirname, 'dist'),
  55. filename: 'js/[name].js'
  56. },
  57. resolve: {
  58. extensions: [".js", ".css", ".json"],
  59. alias: {} //配置别名可以加快webpack查找模块的速度
  60. },
  61. plugins: [//多入口的html文件用chunks这个参数来区分
  62. new HtmlWebpackPlugin({
  63. title: 'index',
  64. template: path.resolve(__dirname, 'src/html', 'index.html'),
  65. filename: 'index.html',
  66. chunks: ['index', 'vendor', 'common','scrollBar'],
  67. hash: true, //防止缓存
  68. inject: true,
  69. minify: {
  70. removeAttributeQuotes: true, //压缩 去掉引号
  71. removeComments: true, //移除HTML中的注释
  72. collapseWhitespace: true //删除空白符与换行符
  73. }
  74. }),
  75. new HtmlWebpackPlugin({
  76. title: 'console.html',
  77. template: path.resolve(__dirname, 'src/html', 'console.html'),
  78. filename: 'console.html',
  79. chunks: ['console', 'vendor', 'common','scrollBar'],
  80. hash: true, //防止缓存
  81. inject: true,
  82. minify: {
  83. removeAttributeQuotes: true, //压缩 去掉引号
  84. removeComments: true, //移除HTML中的注释
  85. collapseWhitespace: true //删除空白符与换行符
  86. }
  87. }),
  88. new HtmlWebpackPlugin({
  89. title: 'tiaomuControl.html',
  90. template: path.resolve(__dirname, 'src/html', 'tiaomuControl.html'),
  91. filename: 'tiaomuControl.html',
  92. chunks: ['tiaomuControl', 'vendor', 'common'],
  93. hash: true, //防止缓存
  94. inject: true,
  95. minify: {
  96. removeAttributeQuotes: true, //压缩 去掉引号
  97. removeComments: true, //移除HTML中的注释
  98. collapseWhitespace: true //删除空白符与换行符
  99. }
  100. }),
  101. new HtmlWebpackPlugin({
  102. title: 'assertTypeDetail.html',
  103. template: path.resolve(__dirname, 'src/html', 'assertTypeDetail.html'),
  104. filename: 'assertTypeDetail.html',
  105. chunks: ['assertTypeDetail', 'vendor', 'common'],
  106. hash: true, //防止缓存
  107. inject: true,
  108. minify: {
  109. removeAttributeQuotes: true, //压缩 去掉引号
  110. removeComments: true, //移除HTML中的注释
  111. collapseWhitespace: true //删除空白符与换行符
  112. }
  113. }),
  114. new HtmlWebpackPlugin({
  115. title: 'assertType.html',
  116. template: path.resolve(__dirname, 'src/html', 'assertType.html'),
  117. filename: 'assertType.html',
  118. chunks: ['assertType', 'vendor', 'common'],
  119. hash: true, //防止缓存
  120. inject: true,
  121. minify: {
  122. removeAttributeQuotes: true, //压缩 去掉引号
  123. removeComments: true, //移除HTML中的注释
  124. collapseWhitespace: true //删除空白符与换行符
  125. }
  126. }),
  127. new HtmlWebpackPlugin({
  128. title: 'mukuaiControl.html',
  129. template: path.resolve(__dirname, 'src/html', 'mukuaiControl.html'),
  130. filename: 'mukuaiControl.html',
  131. chunks: ['mukuaiControl', 'vendor', 'common'],
  132. hash: true, //防止缓存
  133. inject: true,
  134. minify: {
  135. removeAttributeQuotes: true, //压缩 去掉引号
  136. removeComments: true, //移除HTML中的注释
  137. collapseWhitespace: true //删除空白符与换行符
  138. }
  139. }),
  140. new HtmlWebpackPlugin({
  141. title: 'quexianDetail.html',
  142. template: path.resolve(__dirname, 'src/html', 'quexianDetail.html'),
  143. filename: 'quexianDetail.html',
  144. chunks: ['quexianDetail', 'vendor', 'common'],
  145. hash: true, //防止缓存
  146. inject: true,
  147. minify: {
  148. removeAttributeQuotes: true, //压缩 去掉引号
  149. removeComments: true, //移除HTML中的注释
  150. collapseWhitespace: true //删除空白符与换行符
  151. }
  152. }),
  153. new HtmlWebpackPlugin({
  154. title: 'quexianDetailHome.html',
  155. template: path.resolve(__dirname, 'src/html', 'quexianDetailHome.html'),
  156. filename: 'quexianDetailHome.html',
  157. chunks: ['quexianDetailHome', 'vendor', 'common'],
  158. hash: true, //防止缓存
  159. inject: true,
  160. minify: {
  161. removeAttributeQuotes: true, //压缩 去掉引号
  162. removeComments: true, //移除HTML中的注释
  163. collapseWhitespace: true //删除空白符与换行符
  164. }
  165. }),
  166. new HtmlWebpackPlugin({
  167. title: 'quexianDetailControl.html',
  168. template: path.resolve(__dirname, 'src/html', 'quexianDetailControl.html'),
  169. filename: 'quexianDetailControl.html',
  170. chunks: ['quexianDetailControl', 'vendor', 'common'],
  171. hash: true, //防止缓存
  172. inject: true,
  173. minify: {
  174. removeAttributeQuotes: true, //压缩 去掉引号
  175. removeComments: true, //移除HTML中的注释
  176. collapseWhitespace: true //删除空白符与换行符
  177. }
  178. }),
  179. new HtmlWebpackPlugin({
  180. title: 'quexianDetailControlHome.html',
  181. template: path.resolve(__dirname, 'src/html', 'quexianDetailControlHome.html'),
  182. filename: 'quexianDetailControlHome.html',
  183. chunks: ['quexianDetailControlHome', 'vendor', 'common'],
  184. hash: true, //防止缓存
  185. inject: true,
  186. minify: {
  187. removeAttributeQuotes: true, //压缩 去掉引号
  188. removeComments: true, //移除HTML中的注释
  189. collapseWhitespace: true //删除空白符与换行符
  190. }
  191. }),
  192. new HtmlWebpackPlugin({
  193. title: 'quexianXQ.html',
  194. template: path.resolve(__dirname, 'src/html', 'quexianXQ.html'),
  195. filename: 'quexianXQ.html',
  196. chunks: ['quexianXQ', 'vendor', 'common'],
  197. hash: true, //防止缓存
  198. inject: true,
  199. minify: {
  200. removeAttributeQuotes: true, //压缩 去掉引号
  201. removeComments: true, //移除HTML中的注释
  202. collapseWhitespace: true //删除空白符与换行符
  203. }
  204. }),
  205. new HtmlWebpackPlugin({
  206. title: 'partDetailControl.html',
  207. template: path.resolve(__dirname, 'src/html', 'partDetailControl.html'),
  208. filename: 'partDetailControl.html',
  209. chunks: ['partDetailControl', 'vendor', 'common'],
  210. hash: true, //防止缓存
  211. inject: true,
  212. minify: {
  213. removeAttributeQuotes: true, //压缩 去掉引号
  214. removeComments: true, //移除HTML中的注释
  215. collapseWhitespace: true //删除空白符与换行符
  216. }
  217. }),
  218. new HtmlWebpackPlugin({
  219. title: 'jiaji.html',
  220. template: path.resolve(__dirname, 'src/html', 'jiaji.html'),
  221. filename: 'jiaji.html',
  222. chunks: ['jiaji', 'vendor', 'common'],
  223. hash: true, //防止缓存
  224. inject: true,
  225. minify: {
  226. removeAttributeQuotes: true, //压缩 去掉引号
  227. removeComments: true, //移除HTML中的注释
  228. collapseWhitespace: true //删除空白符与换行符
  229. }
  230. }),
  231. new HtmlWebpackPlugin({
  232. title: 'abnormal.html',
  233. template: path.resolve(__dirname, 'src/html', 'abnormal.html'),
  234. filename: 'abnormal.html',
  235. chunks: ['abnormal', 'vendor', 'common'],
  236. hash: true, //防止缓存
  237. inject: true,
  238. minify: {
  239. removeAttributeQuotes: true, //压缩 去掉引号
  240. removeComments: true, //移除HTML中的注释
  241. collapseWhitespace: true //删除空白符与换行符
  242. }
  243. }),
  244. new HtmlWebpackPlugin({
  245. title: 'deptScoreDetailControl.html',
  246. template: path.resolve(__dirname, 'src/html', 'deptScoreDetailControl.html'),
  247. filename: 'deptScoreDetailControl.html',
  248. chunks: ['deptScoreDetailControl', 'vendor', 'common'],
  249. hash: true, //防止缓存
  250. inject: true,
  251. minify: {
  252. removeAttributeQuotes: true, //压缩 去掉引号
  253. removeComments: true, //移除HTML中的注释
  254. collapseWhitespace: true //删除空白符与换行符
  255. }
  256. }),
  257. new HtmlWebpackPlugin({
  258. title: 'payDetail.html',
  259. template: path.resolve(__dirname, 'src/html', 'payDetail.html'),
  260. filename: 'payDetail.html',
  261. chunks: ['payDetail', 'vendor', 'common'],
  262. hash: true, //防止缓存
  263. inject: true,
  264. minify: {
  265. removeAttributeQuotes: true, //压缩 去掉引号
  266. removeComments: true, //移除HTML中的注释
  267. collapseWhitespace: true //删除空白符与换行符
  268. }
  269. }),
  270. new HtmlWebpackPlugin({
  271. title: 'partDetail.html',
  272. template: path.resolve(__dirname, 'src/html', 'partDetail.html'),
  273. filename: 'partDetail.html',
  274. chunks: ['partDetail', 'vendor', 'common'],
  275. hash: true, //防止缓存
  276. inject: true,
  277. minify: {
  278. removeAttributeQuotes: true, //压缩 去掉引号
  279. removeComments: true, //移除HTML中的注释
  280. collapseWhitespace: true //删除空白符与换行符
  281. }
  282. }),
  283. new HtmlWebpackPlugin({
  284. title: 'dayDetail.html',
  285. template: path.resolve(__dirname, 'src/html', 'dayDetail.html'),
  286. filename: 'dayDetail.html',
  287. chunks: ['dayDetail', 'vendor', 'common'],
  288. hash: true, //防止缓存
  289. inject: true,
  290. minify: {
  291. removeAttributeQuotes: true, //压缩 去掉引号
  292. removeComments: true, //移除HTML中的注释
  293. collapseWhitespace: true //删除空白符与换行符
  294. }
  295. }),
  296. new HtmlWebpackPlugin({
  297. title: 'deptScoreDetail.html',
  298. template: path.resolve(__dirname, 'src/html', 'deptScoreDetail.html'),
  299. filename: 'deptScoreDetail.html',
  300. chunks: ['deptScoreDetail', 'vendor', 'common'],
  301. hash: true, //防止缓存
  302. inject: true,
  303. minify: {
  304. removeAttributeQuotes: true, //压缩 去掉引号
  305. removeComments: true, //移除HTML中的注释
  306. collapseWhitespace: true //删除空白符与换行符
  307. }
  308. }),
  309. new HtmlWebpackPlugin({
  310. title: 'deptConsole.html',
  311. template: path.resolve(__dirname, 'src/html', 'deptConsole.html'),
  312. filename: 'deptConsole.html',
  313. chunks: ['deptConsole', 'vendor', 'common'],
  314. hash: true, //防止缓存
  315. inject: true,
  316. minify: {
  317. removeAttributeQuotes: true, //压缩 去掉引号
  318. removeComments: true, //移除HTML中的注释
  319. collapseWhitespace: true //删除空白符与换行符
  320. }
  321. }),
  322. new HtmlWebpackPlugin({
  323. title: 'itemManager.html',
  324. template: path.resolve(__dirname, 'src/html', 'itemManager.html'),
  325. filename: 'itemManager.html',
  326. chunks: ['itemManager', 'vendor', 'common'],
  327. hash: true, //防止缓存
  328. inject: true,
  329. minify: {
  330. removeAttributeQuotes: true, //压缩 去掉引号
  331. removeComments: true, //移除HTML中的注释
  332. collapseWhitespace: true //删除空白符与换行符
  333. }
  334. }),
  335. new HtmlWebpackPlugin({
  336. title: 'moduleManager.html',
  337. template: path.resolve(__dirname, 'src/html', 'moduleManager.html'),
  338. filename: 'moduleManager.html',
  339. chunks: ['moduleManager', 'vendor', 'common'],
  340. hash: true, //防止缓存
  341. inject: true,
  342. minify: {
  343. removeAttributeQuotes: true, //压缩 去掉引号
  344. removeComments: true, //移除HTML中的注释
  345. collapseWhitespace: true //删除空白符与换行符
  346. }
  347. }),
  348. new HtmlWebpackPlugin({
  349. title: 'tiaomu.html',
  350. template: path.resolve(__dirname, 'src/html', 'tiaomu.html'),
  351. filename: 'tiaomu.html',
  352. chunks: ['tiaomu', 'vendor', 'common'],
  353. hash: true, //防止缓存
  354. inject: true,
  355. minify: {
  356. removeAttributeQuotes: true, //压缩 去掉引号
  357. removeComments: true, //移除HTML中的注释
  358. collapseWhitespace: true //删除空白符与换行符
  359. }
  360. }),
  361. new HtmlWebpackPlugin({
  362. title: 'mukuai.html',
  363. template: path.resolve(__dirname, 'src/html', 'mukuai.html'),
  364. filename: 'mukuai.html',
  365. chunks: ['mukuai', 'vendor', 'common'],
  366. hash: true, //防止缓存
  367. inject: true,
  368. minify: {
  369. removeAttributeQuotes: true, //压缩 去掉引号
  370. removeComments: true, //移除HTML中的注释
  371. collapseWhitespace: true //删除空白符与换行符
  372. }
  373. }),
  374. new HtmlWebpackPlugin({
  375. title: 'login.html',
  376. template: path.resolve(__dirname, 'src/html', 'login.html'),
  377. filename: 'login.html',
  378. chunks: ['login', 'vendor', 'common'],
  379. hash: true, //防止缓存
  380. inject: true,
  381. minify: {
  382. removeAttributeQuotes: true, //压缩 去掉引号
  383. removeComments: true, //移除HTML中的注释
  384. collapseWhitespace: true //删除空白符与换行符
  385. }
  386. }),
  387. new HtmlWebpackPlugin({
  388. title: 'qcList.html',
  389. template: path.resolve(__dirname, 'src/html', 'qcList.html'),
  390. filename: 'qcList.html',
  391. chunks: ['qcList', 'vendor', 'common'],
  392. hash: true, //防止缓存
  393. inject: true,
  394. minify: {
  395. removeAttributeQuotes: true, //压缩 去掉引号
  396. removeComments: true, //移除HTML中的注释
  397. collapseWhitespace: true //删除空白符与换行符
  398. }
  399. }),
  400. new HtmlWebpackPlugin({
  401. title: 'qcListDocteam.html',
  402. template: path.resolve(__dirname, 'src/html', 'qcListDocteam.html'),
  403. filename: 'qcListDocteam.html',
  404. chunks: ['qcListDocteam', 'vendor', 'common'],
  405. hash: true, //防止缓存
  406. inject: true,
  407. minify: {
  408. removeAttributeQuotes: true, //压缩 去掉引号
  409. removeComments: true, //移除HTML中的注释
  410. collapseWhitespace: true //删除空白符与换行符
  411. }
  412. }),
  413. new HtmlWebpackPlugin({
  414. title: 'qcListPerson.html',
  415. template: path.resolve(__dirname, 'src/html', 'qcListPerson.html'),
  416. filename: 'qcListPerson.html',
  417. chunks: ['qcListPerson', 'vendor', 'common'],
  418. hash: true, //防止缓存
  419. inject: true,
  420. minify: {
  421. removeAttributeQuotes: true, //压缩 去掉引号
  422. removeComments: true, //移除HTML中的注释
  423. collapseWhitespace: true //删除空白符与换行符
  424. }
  425. }),
  426. new HtmlWebpackPlugin({
  427. title: 'qcListDept.html',
  428. template: path.resolve(__dirname, 'src/html', 'qcListDept.html'),
  429. filename: 'qcListDept.html',
  430. chunks: ['qcListDept', 'vendor', 'common'],
  431. hash: true, //防止缓存
  432. inject: true,
  433. minify: {
  434. removeAttributeQuotes: true, //压缩 去掉引号
  435. removeComments: true, //移除HTML中的注释
  436. collapseWhitespace: true //删除空白符与换行符
  437. }
  438. }),
  439. new HtmlWebpackPlugin({
  440. title: 'qcScore.html',
  441. template: path.resolve(__dirname, 'src/html', 'qcScore.html'),
  442. filename: 'qcScore.html',
  443. chunks: [ 'qcScore','vendor', 'common'],
  444. hash: true, //防止缓存
  445. inject: true,
  446. minify: {
  447. removeAttributeQuotes: true, //压缩 去掉引号
  448. removeComments: true, //移除HTML中的注释
  449. collapseWhitespace: true //删除空白符与换行符
  450. }
  451. }),
  452. new HtmlWebpackPlugin({
  453. title: 'statistics.html',
  454. template: path.resolve(__dirname, 'src/html', 'statistics.html'),
  455. filename: 'statistics.html',
  456. chunks: ['index', 'vendor', 'common'],
  457. hash: true, //防止缓存
  458. inject: true,
  459. minify: {
  460. removeAttributeQuotes: true, //压缩 去掉引号
  461. removeComments: true, //移除HTML中的注释
  462. collapseWhitespace: true //删除空白符与换行符
  463. }
  464. }),
  465. new HtmlWebpackPlugin({
  466. title: 'userManager.html',
  467. template: path.resolve(__dirname, 'src/html', 'userManager.html'),
  468. filename: 'userManager.html',
  469. chunks: ['userManager', 'vendor', 'common'],
  470. hash: true, //防止缓存
  471. inject: true,
  472. minify: {
  473. removeAttributeQuotes: true, //压缩 去掉引号
  474. removeComments: true, //移除HTML中的注释
  475. collapseWhitespace: true //删除空白符与换行符
  476. }
  477. }),
  478. new HtmlWebpackPlugin({
  479. title: 'roleManager.html',
  480. template: path.resolve(__dirname, 'src/html', 'roleManager.html'),
  481. filename: 'roleManager.html',
  482. chunks: ['roleManager', 'vendor', 'common'],
  483. hash: true, //防止缓存
  484. inject: true,
  485. minify: {
  486. removeAttributeQuotes: true, //压缩 去掉引号
  487. removeComments: true, //移除HTML中的注释
  488. collapseWhitespace: true //删除空白符与换行符
  489. }
  490. }),
  491. new HtmlWebpackPlugin({
  492. title: 'singleVeto.html', //单项否决详情页
  493. template: path.resolve(__dirname, 'src/html', 'singleVeto.html'),
  494. filename: 'singleVeto.html',
  495. chunks: ['singleVeto', 'vendor', 'common'],
  496. hash: true, //防止缓存
  497. inject: true,
  498. minify: {
  499. removeAttributeQuotes: true, //压缩 去掉引号
  500. removeComments: true, //移除HTML中的注释
  501. collapseWhitespace: true //删除空白符与换行符
  502. }
  503. }),
  504. new HtmlWebpackPlugin({
  505. title: 'itemDefectDetail.html', //单项否决详情页
  506. template: path.resolve(__dirname, 'src/html', 'itemDefectDetail.html'),
  507. filename: 'itemDefectDetail.html',
  508. chunks: ['itemDefectDetail', 'vendor', 'common'],
  509. hash: true, //防止缓存
  510. inject: true,
  511. minify: {
  512. removeAttributeQuotes: true, //压缩 去掉引号
  513. removeComments: true, //移除HTML中的注释
  514. collapseWhitespace: true //删除空白符与换行符
  515. }
  516. }),
  517. new HtmlWebpackPlugin({
  518. title: 'keyItemFlawControl.html', //关键条目缺陷占比
  519. template: path.resolve(__dirname, 'src/html', 'keyItemFlawControl.html'),
  520. filename: 'keyItemFlawControl.html',
  521. chunks: ['keyItemFlawControl', 'vendor', 'common'],
  522. hash: true, //防止缓存
  523. inject: true,
  524. minify: {
  525. removeAttributeQuotes: true, //压缩 去掉引号
  526. removeComments: true, //移除HTML中的注释
  527. collapseWhitespace: true //删除空白符与换行符
  528. }
  529. }),
  530. new CopyWebpackPlugin([
  531. {
  532. from:'src/resource',
  533. to:path.resolve(__dirname,'dist','resource'),
  534. flatten:true, //false会拷贝原始文件夹路径
  535. }
  536. ]),
  537. new MiniCssExtractPlugin({
  538. filename: 'css/[name].css',
  539. chunkFilename: '[id].css'
  540. }),
  541. new webpack.HotModuleReplacementPlugin(),
  542. new CleanWebpackPlugin()
  543. ],
  544. optimization: { //webpack4.x的最新优化配置项,用于提取公共代码
  545. minimizer: [
  546. new UglifyJsPlugin({
  547. uglifyOptions: {
  548. ie8: true,
  549. compress: {
  550. properties: false,
  551. warnings: false
  552. },
  553. mangle: {
  554. screw_ie8: false,
  555. except: ['e']
  556. },
  557. output: {
  558. beautify: true
  559. },
  560. sourceMap: false
  561. }
  562. })
  563. ],
  564. splitChunks: {
  565. cacheGroups: {
  566. commons: {
  567. chunks: "initial",
  568. name: "common",
  569. minChunks: 2,
  570. maxInitialRequests: 5, // The default limit is too small to showcase the effect
  571. minSize: 0, // This is example is too small to create commons chunks
  572. reuseExistingChunk: true // 可设置是否重用该chunk
  573. }
  574. }
  575. }
  576. },
  577. module: {
  578. noParse: /WdatePicker/,
  579. rules: [
  580. {
  581. test: /.js$/,
  582. enforce: 'post',
  583. loader: 'es3ify-loader'
  584. },
  585. {
  586. test: /\.m?js$/,
  587. exclude: /(node_modules|bower_components)/,
  588. use: {
  589. loader: 'babel-loader',
  590. options: {
  591. presets:['@babel/preset-env']
  592. }
  593. }
  594. },
  595. {
  596. test: /\.css$/,
  597. use: [{
  598. loader: MiniCssExtractPlugin.loader
  599. },
  600. 'css-loader'
  601. ]
  602. },
  603. {
  604. test: /\.less$/,
  605. use: [{
  606. loader: MiniCssExtractPlugin.loader
  607. },
  608. 'css-loader', 'less-loader'
  609. ]
  610. },
  611. {
  612. test:/\.(png|gif|jpg|jpeg|svg|eot|ttf|woff|woff2)$/,
  613. use:[{
  614. loader:'url-loader',
  615. options:{
  616. limit:10240,
  617. esModule:false,
  618. name:'[name]_[hash:6].[ext]',
  619. outputPath:'images/'
  620. }
  621. }],
  622. exclude:/node_modules/
  623. },{
  624. test:/.html$/,
  625. use:'html-withimg-loader'
  626. }
  627. ]
  628. },
  629. // devtool: 'cheap-module-eval-source-map', //开发环境cheap-module-eval-source-map //生产环境cheap-module-source-map
  630. mode: 'development',
  631. devServer: {
  632. contentBase: "./dist", //静态文件根目录
  633. proxy: {
  634. '/': proxyHost
  635. },
  636. hot: true,
  637. openPage:'login.html'
  638. }
  639. }