• webpack配置实例


    webpack.config.js

      1 const config = require('./config.json');
      2 const ExtractTextPlugin = require('extract-text-webpack-plugin');//输出单独文件插件
      3 const HtmlWebpackPlugin = require('html-webpack-plugin');
      4 const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
      5 const glob = require('glob');
      6 const path = require('path');
      7 const extractLess = new ExtractTextPlugin({
      8     filename:'styles/[name].css'
      9 });
     10 
     11 let files = glob.sync('app/view/*.html');
     12 let hwps = [];
     13 files.forEach(function(pathname){
     14     hwps.push(new HtmlWebpackPlugin({
     15         template:pathname,
     16         filename:pathname.replace('app/view/',''),
     17         css:['styles/main.css'],
     18         js:['bundle.js'],
     19         inject: true
     20     }));
     21 });
     22 
     23 
     24 module.exports = {
     25     devtool: 'eval-source-map',
     26     entry:  __dirname + "/app/main.ts",//已多次提及的唯一入口文件
     27     output: {
     28       path: __dirname + "/public",//打包后的文件存放的地方
     29       filename: "scripts/bundle.js"//打包后输出文件的文件名
     30     },
     31     devServer: {
     32         contentBase: "./public",//本地服务器所加载的页面所在的目录
     33         historyApiFallback: true,//不跳转
     34         inline: true,//实时刷新
     35         port: 6969
     36     },
     37     module:{
     38         rules:[
     39             {
     40                 test:/(.ts)$/,
     41                 use:'ts-loader'
     42             },
     43             {
     44                 test:/.less$/,
     45                 use:extractLess.extract({
     46                     fallback:'style-loader',
     47                     use:[
     48                         {
     49                             loader:'css-loader',
     50                             options:{
     51                                 importLoaders: 1,
     52                                 sourceMap:true
     53                                 //minimize: true //压缩css
     54                             }
     55                         },
     56                         {
     57                             loader:'postcss-loader',
     58                             options:{
     59                                 plugins:[
     60                                     require('autoprefixer')()
     61                                 ],
     62                                 sourceMap: 'inline'
     63                             }
     64                         },
     65                         {
     66                             loader:'less-loader',
     67                             options:{
     68                                 sourceMap:true
     69                             }
     70                         }
     71                     ]
     72                 })
     73             },
     74             {
     75                 test:/.(png|jpe?g|gif)$/,
     76                 use:[
     77                     {
     78                         loader:'url-loader',
     79                         options:{
     80                             limit:8192,
     81                             name:'/assets/images/[name].[ext]'
     82                         }
     83                     }
     84                 ]
     85             },
     86             {
     87                 test:/.html$/,
     88                 use:['html-loader']
     89             },
     90             {
     91                 test:/.svg$/,
     92                 use:[
     93                     {
     94                         loader:'url-loader',
     95                         options:{
     96                             limit:8192,
     97                             name:'/assets/svgs/[name].[ext]'
     98                         }
     99                     }
    100                 ]
    101             },
    102             {
    103                 test:/.(ttf|woff2|eot|woff)($|?)/,
    104                 use:[
    105                     {
    106                         loader:'file-loader',
    107                         options:{
    108                             name:'assets/fonts/[name].[ext]'
    109                         }
    110                     }
    111                 ]
    112             }/* ,
    113             {
    114                 test: /.tmpl/,
    115                 loader: "templatejs-loader",
    116                 query: {
    117                     sTag: '<#',
    118                     eTag: '#>',
    119                     expression: 'require("template_js")'
    120                 }
    121             } */
    122         ]
    123     },
    124     plugins:[
    125         extractLess,
    126         ...hwps,
    127         require('autoprefixer')
    128         //new UglifyJSPlugin()  //压缩js
    129     ],
    130     resolve:{
    131         extensions:['.ts','.js']//忽略后缀
    132     }
    133 };

    package.json

     1 {
     2   "name": "xinanguoji",
     3   "version": "1.0.0",
     4   "description": "",
     5   "main": "index.js",
     6   "scripts": {
     7     "test": "echo "Error: no test specified" && exit 1",
     8     "server": "webpack-dev-server"
     9   },
    10   "author": "m_y",
    11   "license": "ISC",
    12   "devDependencies": {
    13     "autoprefixer": "^7.1.5",
    14     "css-loader": "^0.28.7",
    15     "extract-text-webpack-plugin": "^3.0.1",
    16     "file-loader": "^1.1.5",
    17     "html-loader": "^0.5.1",
    18     "html-webpack-plugin": "^2.30.1",
    19     "less": "^3.0.0-alpha.3",
    20     "less-loader": "^4.0.5",
    21     "postcss-loader": "^2.0.8",
    22     "style-loader": "^0.19.0",
    23     "templatejs-loader": "^0.1.1",
    24     "ts-loader": "^2.3.7",
    25     "typescript": "^2.5.3",
    26     "uglifyjs-webpack-plugin": "^1.0.0-beta.3",
    27     "url-loader": "^0.6.2",
    28     "webpack": "^3.7.1",
    29     "webpack-dev-server": "^2.9.2"
    30   },
    31   "dependencies": {
    32     "bootstrap": "^3.3.7",
    33     "template_js": "0.6.1"
    34   }
    35 }
  • 相关阅读:
    docker+headless+robotframework+jenkins实现web自动化持续集成
    dokcer入门
    dockerfile详解
    全网最全Docker命令详解
    ql的python学习之路-day14
    ql的python学习之路-day13
    ql的python学习之路-day12
    关于python中第三方库安装方法和问题解决
    微信小程序之组件常见的问题
    微信小程序常用代码(1)——tab切换
  • 原文地址:https://www.cnblogs.com/Red-ButterFly/p/7777934.html
Copyright © 2020-2023  润新知