webpack.config.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435
  1. const webpack = require('webpack');
  2. const path = require('path');
  3. const ExtractTextPlugin = require("extract-text-webpack-plugin");
  4. const HtmlWebpackPlugin = require('html-webpack-plugin');
  5. const WebpackDevServer = require('webpack-dev-server');
  6. const entries = require('./webpack/entry.config.js');
  7. const version = require('./package.json').version;
  8. const argv = require('yargs').argv;
  9. const ImageminPlugin = require('imagemin-webpack-plugin').default;
  10. let theme = {
  11. '@primary-color': '#58a3ff',
  12. '@link-color': '#58a3ff'
  13. };
  14. let isWatch = argv.env.watch == 'watch';
  15. let isDev = isWatch || argv.env.deploy == 'dev';
  16. module.exports = (function () {
  17. let plugins = [
  18. new webpack.optimize.CommonsChunkPlugin({
  19. name: 'vendors',
  20. filename: "[name].js",
  21. minChunks: Infinity
  22. }),
  23. new ExtractTextPlugin({
  24. filename: "[name].css",
  25. disable: false,
  26. allChunks: true
  27. }),
  28. new webpack.ProvidePlugin({
  29. $: "jquery",
  30. jQuery: "jquery"
  31. }),
  32. new HtmlWebpackPlugin({
  33. title: '首页',
  34. filename: 'html/index.html',
  35. template: './template/index.html',
  36. chunks: ['index', 'vendors']
  37. }),
  38. new HtmlWebpackPlugin({
  39. title: '搜索页',
  40. filename: 'html/index.html',
  41. template: './template/search.html',
  42. chunks: ['search', 'vendors']
  43. }),
  44. // new HtmlWebpackPlugin({
  45. // title: '支付跳转页面',
  46. // filename: 'html/toPayment.html',
  47. // template: './template/toPayment.html',
  48. // chunks: ['toPayment', 'vendors']
  49. // }),
  50. new HtmlWebpackPlugin({
  51. title: '关于公司',
  52. filename: 'html/aboutUs.html',
  53. template: './template/aboutUs.html',
  54. chunks: ['aboutUs', 'vendors']
  55. }),
  56. // new HtmlWebpackPlugin({
  57. // title: '关于公司APP',
  58. // filename: 'html/APPaboutUs.html',
  59. // template: './template/APPaboutUs.html',
  60. // chunks: ['APPaboutUs', 'vendors']
  61. // }),
  62. new HtmlWebpackPlugin({
  63. title: '联系我们',
  64. filename: 'html/contactUs.html',
  65. template: './template/contactUs.html',
  66. chunks: ['contactUs', 'vendors']
  67. }),
  68. // new HtmlWebpackPlugin({
  69. // title: '科技服务',
  70. // filename: 'html/service.html',
  71. // template: './template/service.html',
  72. // chunks: ['service', 'vendors']
  73. // }),
  74. new HtmlWebpackPlugin({
  75. title: '注册',
  76. filename: 'html/register.html',
  77. template: './template/register.html',
  78. chunks: ['register', 'vendors']
  79. }),
  80. // new HtmlWebpackPlugin({
  81. // title: '会员',
  82. // filename: 'html/member.html',
  83. // template: './template/member.html',
  84. // chunks: ['member', 'vendors']
  85. // }),
  86. // new HtmlWebpackPlugin({
  87. // title: '科技交易',
  88. // filename: 'html/technologyTrading.html',
  89. // template: './template/technologyTrading.html',
  90. // chunks: ['technologyTrading', 'vendors']
  91. // }),
  92. new HtmlWebpackPlugin({
  93. title: '科技智库',
  94. filename: 'html/thinkTank.html',
  95. template: './template/thinkTank.html',
  96. chunks: ['thinkTank', 'vendors']
  97. }),
  98. // new HtmlWebpackPlugin({
  99. // title: '科技金融',
  100. // filename: 'html/financialIndex.html',
  101. // template: './template/financialIndex.html',
  102. // chunks: ['financialIndex', 'vendors']
  103. // }),
  104. // new HtmlWebpackPlugin({
  105. // title: '科技交易-技术专利',
  106. // filename: 'html/technologyTrading/achievement.html',
  107. // template: './template/technologyTrading/achievement.html',
  108. // chunks: ['technologyTrading/achievement', 'vendors']
  109. // }),
  110. // new HtmlWebpackPlugin({
  111. // title: '科技交易-技术需求',
  112. // filename: 'html/technologyTrading/demand.html',
  113. // template: './template/technologyTrading/demand.html',
  114. // chunks: ['technologyTrading/demand', 'vendors']
  115. // }),
  116. new HtmlWebpackPlugin({
  117. title: '科技交易-技术专利详情',
  118. filename: 'html/technologyTrading/achievementDetail.html',
  119. template: './template/technologyTrading/achievementDetail.html',
  120. chunks: ['technologyTrading/achievementDetail', 'vendors']
  121. }),
  122. new HtmlWebpackPlugin({
  123. title: '科技交易-技术需求详情',
  124. filename: 'html/technologyTrading/demandDetail.html',
  125. template: './template/technologyTrading/demandDetail.html',
  126. chunks: ['technologyTrading/demandDetail', 'vendors']
  127. }),
  128. // new HtmlWebpackPlugin({
  129. // title: '在线评估',
  130. // filename: 'html/technologyTrading/assessMent.html',
  131. // template: './template/technologyTrading/assessMent.html',
  132. // chunks: ['technologyTrading/assessMent', 'vendors']
  133. // }),
  134. // new HtmlWebpackPlugin({
  135. // title: '科技交易-技术成果下单页面',
  136. // filename: 'html/technologyTrading/achievementOrder.html',
  137. // template: './template/technologyTrading/achievementOrder.html',
  138. // chunks: ['technologyTrading/achievementOrder', 'vendors']
  139. // }),
  140. // new HtmlWebpackPlugin({
  141. // title: '科技交易-技术需求下单页面',
  142. // filename: 'html/technologyTrading/demandOrder.html',
  143. // template: './template/technologyTrading/demandOrder.html',
  144. // chunks: ['technologyTrading/demandOrder', 'vendors']
  145. // }),
  146. new HtmlWebpackPlugin({
  147. title: '智库咨询-智政详情',
  148. filename: 'html/thinkTank/policyDetail.html',
  149. template: './template/thinkTank/policyDetail.html',
  150. chunks: ['thinkTank/policyDetail', 'vendors']
  151. }),
  152. new HtmlWebpackPlugin({
  153. title: '智库咨询-智政列表',
  154. filename: 'html/thinkTank/policyList.html',
  155. template: './template/thinkTank/policyList.html',
  156. chunks: ['thinkTank/policyList', 'vendors']
  157. }),
  158. new HtmlWebpackPlugin({
  159. title: '智库咨询-智者详情',
  160. filename: 'html/thinkTank/thinkerDetail.html',
  161. template: './template/thinkTank/thinkerDetail.html',
  162. chunks: ['thinkTank/thinkerDetail', 'vendors']
  163. }),
  164. // new HtmlWebpackPlugin({
  165. // title: '科技金融-投资机构',
  166. // filename: 'html/financial/investmentInstitution.html',
  167. // template: './template/financial/investmentInstitution.html',
  168. // chunks: ['financial/investmentInstitution', 'vendors']
  169. // }),
  170. // new HtmlWebpackPlugin({
  171. // title: '科技金融-投资机构',
  172. // filename: 'html/financial/investmentDetail.html',
  173. // template: './template/financial/investmentDetail.html',
  174. // chunks: ['financial/investmentDetail', 'vendors']
  175. // }),
  176. // new HtmlWebpackPlugin({
  177. // title: '科技服务-高新认定',
  178. // filename: 'html/service/highTechCognizance.html',
  179. // template: './template/service/highTechCognizance.html',
  180. // chunks: ['service/highTechCognizance', 'vendors']
  181. // }),
  182. // new HtmlWebpackPlugin({
  183. // title: '科技服务-知识产权',
  184. // filename: 'html/service/propertyRight.html',
  185. // template: './template/service/propertyRight.html',
  186. // chunks: ['service/propertyRight', 'vendors']
  187. // }),
  188. // new HtmlWebpackPlugin({
  189. // title: '科技服务-高新认定',
  190. // filename: 'html/service/projectDetails.html',
  191. // template: './template/service/projectDetails.html',
  192. // chunks: ['service/projectDetails', 'vendors']
  193. // }),
  194. // new HtmlWebpackPlugin({
  195. // title: '科技服务-服务意向',
  196. // filename: 'html/service/purpose.html',
  197. // template: './template/service/purpose.html',
  198. // chunks: ['service/purpose', 'vendors']
  199. // }),
  200. //newsApp
  201. new HtmlWebpackPlugin({
  202. title: '新闻详情',
  203. filename: 'html/news/newsDetailApp.html',
  204. template: './template/news/newsDetailApp.html',
  205. chunks: ['news/newsDetailApp', 'vendors']
  206. }),
  207. // new HtmlWebpackPlugin({
  208. // title: '高企认定',
  209. // filename: 'html/news/appCognizance.html',
  210. // template: './template/news/appCognizance.html',
  211. // chunks: ['news/appCognizance', 'vendors']
  212. // }),
  213. new HtmlWebpackPlugin({
  214. title: '注册协议',
  215. filename: 'html/news/agreement.html',
  216. template: './template/news/agreement.html',
  217. chunks: ['news/agreement', 'vendors']
  218. }),
  219. /* 2018-6 改版后科技需求 */
  220. new HtmlWebpackPlugin({
  221. title: '科技需求',
  222. filename: 'html/newMenu/demand.html',
  223. template: './template/newMenu/demand.html',
  224. chunks: ['newMenu/demand', 'vendors']
  225. }),
  226. new HtmlWebpackPlugin({
  227. title: '科技成果',
  228. filename: 'html/newMenu/achievement.html',
  229. template: './template/newMenu/achievement.html',
  230. chunks: ['newMenu/achievement', 'vendors']
  231. }),
  232. new HtmlWebpackPlugin({
  233. title: '科技成果列表',
  234. filename: 'html/newMenu/achievementList.html',
  235. template: './template/newMenu/achievementList.html',
  236. chunks: ['newMenu/achievementList', 'vendors']
  237. }),
  238. new HtmlWebpackPlugin({
  239. title: '科技需求列表',
  240. filename: 'html/newMenu/demandList.html',
  241. template: './template/newMenu/demandList.html',
  242. chunks: ['newMenu/demandList', 'vendors']
  243. }),
  244. new HtmlWebpackPlugin({
  245. title: '科技服务',
  246. filename: 'html/newMenu/services.html',
  247. template: './template/newMenu/services.html',
  248. chunks: ['newMenu/services', 'vendors']
  249. }),
  250. new HtmlWebpackPlugin({
  251. title: '科技服务列表',
  252. filename: 'html/newMenu/serviceList.html',
  253. template: './template/newMenu/serviceList.html',
  254. chunks: ['newMenu/serviceList', 'vendors']
  255. }),
  256. new HtmlWebpackPlugin({
  257. title: '科技服务详情',
  258. filename: 'html/newMenu/serviceDetails.html',
  259. template: './template/newMenu/serviceDetails.html',
  260. chunks: ['newMenu/serviceDetails', 'vendors']
  261. }),
  262. new HtmlWebpackPlugin({
  263. title: '购物车',
  264. filename: 'html/newMenu/shopList.html',
  265. template: './template/newMenu/shopList.html',
  266. chunks: ['newMenu/shopList', 'vendors']
  267. }),
  268. new HtmlWebpackPlugin({
  269. title: '专利列表',
  270. filename: 'html/newMenu/patentList.html',
  271. template: './template/newMenu/patentList.html',
  272. chunks: ['newMenu/patentList', 'vendors']
  273. }),
  274. new HtmlWebpackPlugin({
  275. title: '知识产权交易首页',
  276. filename: 'html/newMenu/tradingIndex.html',
  277. template: './template/newMenu/tradingIndex.html',
  278. chunks: ['newMenu/tradingIndex', 'vendors']
  279. }),
  280. new HtmlWebpackPlugin({
  281. title: '知识产权申请首页',
  282. filename: 'html/newMenu/patent.html',
  283. template: './template/newMenu/patent.html',
  284. chunks: ['newMenu/patent', 'vendors']
  285. }),
  286. new HtmlWebpackPlugin({
  287. title: '公司简介',
  288. filename: 'html/newMenu/companyProfile.html',
  289. template: './template/newMenu/companyProfile.html',
  290. chunks: ['newMenu/companyProfile', 'vendors']
  291. }),
  292. new HtmlWebpackPlugin({
  293. title: '高企认定',
  294. filename: 'html/newMenu/continueHigh.html',
  295. template: './template/newMenu/landingPage/continueHigh.html',
  296. chunks: ['newMenu/continueHigh', 'vendors']
  297. }),
  298. new HtmlWebpackPlugin({
  299. title: '实用新型专利',
  300. filename: 'html/newMenu/practicalPatent.html',
  301. template: './template/newMenu/landingPage/practicalPatent.html',
  302. chunks: ['newMenu/practicalPatent', 'vendors']
  303. }),
  304. new HtmlWebpackPlugin({
  305. title: '军工认证',
  306. filename: 'html/newMenu/militaryProject.html',
  307. template: './template/newMenu/landingPage/militaryProject.html',
  308. chunks: ['newMenu/militaryProject', 'vendors']
  309. }),
  310. // new HtmlWebpackPlugin({
  311. // title: '高企认定App',
  312. // filename: 'html/newMenu/continueHighApp.html',
  313. // template: './template/newMenu/landingPage/continueHighApp.html',
  314. // chunks: ['newMenu/continueHighApp', 'vendors']
  315. // }),
  316. // new HtmlWebpackPlugin({
  317. // title: '实用新型专利App',
  318. // filename: 'html/newMenu/practicalPatentApp.html',
  319. // template: './template/newMenu/landingPage/practicalPatentApp.html',
  320. // chunks: ['newMenu/practicalPatentApp', 'vendors']
  321. // }),
  322. // new HtmlWebpackPlugin({
  323. // title: '军工认证App',
  324. // filename: 'html/newMenu/militaryProjectApp.html',
  325. // template: './template/newMenu/landingPage/militaryProjectApp.html',
  326. // chunks: ['newMenu/militaryProjectApp', 'vendors']
  327. // }),
  328. new HtmlWebpackPlugin({
  329. title: '知识产权维权',
  330. filename: 'html/newMenu/safeguarding.html',
  331. template: './template/newMenu/safeguarding.html',
  332. chunks: ['newMenu/safeguarding', 'vendors']
  333. }),
  334. //app
  335. // new HtmlWebpackPlugin({
  336. // title: '评估',
  337. // filename: 'html/newMenu/app/assessment.html',
  338. // template: './template/newMenu/app/assessment.html',
  339. // chunks: ['newMenu/app/assessment', 'vendors']
  340. // }),
  341. // new HtmlWebpackPlugin({
  342. // title: '托管',
  343. // filename: 'html/newMenu/app/trusteeship.html',
  344. // template: './template/newMenu/app/trusteeship.html',
  345. // chunks: ['newMenu/app/trusteeship', 'vendors']
  346. // }),
  347. // new HtmlWebpackPlugin({
  348. // title: 'app维权',
  349. // filename: 'html/newMenu/app/safeguardApp.html',
  350. // template: './template/newMenu/app/safeguardApp.html',
  351. // chunks: ['newMenu/app/safeguardApp', 'vendors']
  352. // })
  353. new HtmlWebpackPlugin({
  354. title: '高企自评',
  355. filename: 'html/evaluation/evaluate.html',
  356. template: './template/newMenu/evaluate.html',
  357. chunks: ['evaluation/evaluate','vendors']
  358. }),
  359. new HtmlWebpackPlugin({
  360. title: '知识产权顾问首页',
  361. filename: 'html/newMenu/adviser.html',
  362. template: './template/newMenu/adviser.html',
  363. chunks: ['newMenu/adviser', 'vendors']
  364. }),
  365. new HtmlWebpackPlugin({
  366. title: '知识产权顾问列表',
  367. filename: 'html/newMenu/adviserList.html',
  368. template: './template/newMenu/adviserList.html',
  369. chunks: ['newMenu/adviserList', 'vendors']
  370. }),
  371. new HtmlWebpackPlugin({
  372. title: '知识产权顾问详情',
  373. filename: 'html/newMenu/adviserDetail.html',
  374. template: './template/newMenu/adviserDetail.html',
  375. chunks: ['newMenu/adviserDetail', 'vendors']
  376. }),
  377. ];
  378. if (!isDev) {
  379. //这个使用uglifyJs压缩你的js代码
  380. plugins.unshift(new webpack.DefinePlugin({
  381. "process.env": {
  382. NODE_ENV: JSON.stringify("production")
  383. }
  384. }));
  385. plugins.unshift(new webpack.optimize.UglifyJsPlugin({
  386. minimize: true,
  387. compress: {
  388. warnings: true
  389. }
  390. }));
  391. }
  392. let staticHost = 'http://192.168.0.188';
  393. switch (argv.env.deploy) {
  394. case 'test':
  395. staticHost = 'http://statics.jishutao.com';
  396. break;
  397. case 'prod':
  398. staticHost = 'http://ss.jishutao.com';
  399. break;
  400. default:
  401. break;
  402. }
  403. staticHost = staticHost + '/portal/' + version + '/';
  404. return {
  405. entry: isWatch ? entries.watch : entries.prod,
  406. output: {
  407. path: path.resolve(__dirname, './build/' + argv.env.deploy + '/' + version),
  408. filename: '[name].js',
  409. publicPath: staticHost,
  410. chunkFilename: 'chunks/[name].[hash:8].js'
  411. },
  412. module: require('./webpack/module.config.js')(theme),
  413. resolve: {
  414. extensions: ['.js', '.jsx'],
  415. alias: {
  416. 'js': __dirname + '/src/js',
  417. 'css': __dirname + '/src/css',
  418. 'imgs': __dirname + '/img'
  419. }
  420. },
  421. plugins: plugins,
  422. devServer: {
  423. disableHostCheck: true,
  424. host: '192.168.0.188',
  425. port: 80,
  426. allowedHosts: ['192.168.0.190', '192.168.0.99', '192.168.0.20'],
  427. headers: {
  428. "Access-Control-Allow-Origin": "*"
  429. }
  430. }
  431. };
  432. })();