一、创建项目初始化

1、初始化项目npm init -y

2、创建 src (用来存放开发环境的代码)文件夹。  config (用来存放webpack的配置项)文件夹

3、安装webpack  Webpack-cli

二、base.config.js文件

  • config文件夹下创建base.config.js

1、基本配置

  1. constpath=require("path");

    //定义入口文件路径和出口文件路径
    constPATH={
       app:path.join(__dirname,"../src/main.ts"),
       build:path.join(__dirname,"../dist")
    }

    module.exports={
       //入口文件路径
       entry:{
           app:PATH.app
      },
       output:{
           //导出后文件的名称
           filename:process.env.NODE_ENV!='production'?"js/[name].js":"js/[name].[hash:8].js",
           //出口文件的路径
           path:PATH.build
      },
       resolve:{
            //优先引入的后缀文件
            extensions:['.ts','.tsx','.js'],
            //配置别名
            alias:{}
      }
    }

三、html-webpack-plugin

1、安装

  1. cnpm  install   html-webpack-plugin  -D

2、使用

  1. const   HtmlWebpackPlugin =require("html-webpack-plugin");
    module.exports={
       plugins:[
           newHtmlWebpackPlugin({
               template:"../index.html",
               filename:"index.html",
               title:"vue"
          })
      ]
    }

四、loader处理JS文件

1、安装

  1. cnpm   install  -D   @babel/corebabel-loader    @babel/preset-env  @babel/preset-react    @babel/plugin-transform-runtime   @babel/polyfill

2、处理JS配置

  1. module:{
           rules:[
              {
                   test:/\.js$/,
                   exclude:path.join(__dirname,"../node_modules"),
                   loader:"babel-loader"
              }
          ]
      },

3、根目录下创建.babelrc文件

  1. {
       "presets": [
        [
           "@babel/preset-env",
          {
             "targets": {
               "browsers": ["last 2 versions"]
            }
          }
        ]
      ],
       "plugins": ["@babel/plugin-transform-runtime"]
    }

五、loader处理图片和字体图标

1、安装

  1. cnpm  install  file-loader  url-loader  -D

2、基本使用

  1. module.exports={
       module:{
           rules:[
              {
                   test:/\.(png|jpg|gif|svg)$/,
                   loader: 'file-loader',
                   options: {
                       name: '[name].[ext]?[hash]',
                       publicPath: 'assets',
                  }
              },
              {
                   test: /\.(eot|svg|ttf|woff|woff2)$/,
                   use: [
                      {
                           loader: 'file-loader',
                           options: {
                               name: 'fonts/[name].[hash:8].[ext]'
                          }
                      }//项目设置打包到dist下的fonts文件夹下
                  ]
              },
          ]
      }
    }

七、loader处理ts文件

1、安装

  1. cnpm  install   ts-loader   -D

2、基本使用

  1. module.exports={
       module:{
           rules:[
              {
                   test: /\.tsx?$/,
                   loader: 'ts-loader',
                   exclude: /node_modules/,
                   options: {
                       appendTsSuffixTo: [/\.vue$/]
                  }
              },
          ]
      },

    }

3、ts配置文件 根目录创建tsconfig.json

  1. {
       "compilerOptions": {
         "experimentalDecorators": true, //开启装饰器@ (修饰器本质就是编译时执行的函数)
         "strict": false, //启用所有严格类型检查选项
         // 指定生成哪个模块系统代码
         "module": "es2015",
         "moduleResolution": "node",
         "target": "es5",//编译目标平台
         "allowJs":true,//允许编译javascript文件
         "noImplicitAny": false, // 在表达式和声明上有隐含的'any'类型时报错。
         "allowSyntheticDefaultImports": true,
         "lib": [
           "es5",
           "es2015",
           "es2016",
           "es2017",
           "dom"
        ]
      },
       "include": ["./**/*.ts"]
    }

4、ts识别vue文件 根目录下创建sfc.d.ts

  1. /**
    * 告诉 TypeScript *.vue 后缀的文件可以交给 vue 模块来处理
    * 而在代码中导入 *.vue 文件的时候,需要写上 .vue 后缀。
    * 原因还是因为 TypeScript 默认只识别 *.ts 文件,不识别 *.vue 文件
    */
    declaremodule"*.vue"{
       importVuefrom'vue'
       exportdefaultVue
    }

八、baset.config.js完整代码

  1. constpath=require("path");
    constHtmlWebpackPlugin =require("html-webpack-plugin");
    constVueLoaderPlugin=require('vue-loader/lib/plugin')
    //定义入口文件路径和出口文件路径
    constPATH={
       app:path.join(__dirname,"../src/main.ts"),
       build:path.join(__dirname,"../dist")
    }

    module.exports={
       //入口文件路径
       entry:{
           app:PATH.app
      },
       output:{
           //导出后文件的名称
           filename:process.env.NODE_ENV!='production'?"js/[name].js":"js/[name].[hash:8].js",
           //出口文件的路径
           path:PATH.build
      },
       resolve:{
            //优先引入的后缀文件
            extensions:['.ts','.tsx','.js'],
            //配置别名
            alias:{}
      },
       module:{
           rules:[
              {
                   test:/\.js$/,
                   exclude:path.join(__dirname,"../node_modules"),
                   loader:"babel-loader"
              },
              {
                   test:/\.vue$/,
                   exclude:path.join(__dirname,"../node_modules"),
                   loader:"vue-loader"
              },
              {
                   test:/\.(png|jpg|gif|svg)$/,
                   loader: 'file-loader',
                   options: {
                       name: '[name].[ext]?[hash]',
                       publicPath: 'assets',
                  }
              },
              {
                   test: /\.(eot|svg|ttf|woff|woff2)$/,
                   use: [
                      {
                           loader: 'file-loader',
                           options: {
                               name: 'fonts/[name].[hash:8].[ext]'
                          }
                      }//项目设置打包到dist下的fonts文件夹下
                  ]
              },
              {
                   test: /\.tsx?$/,
                   loader: 'ts-loader',
                   exclude: /node_modules/,
                   options: {
                       appendTsSuffixTo: [/\.vue$/]
                  }
              },
          ]
      },
       plugins:[
           newHtmlWebpackPlugin({
               template:"./index.html",
               filename:"index.html",
               title:"vue"
          }),
           newVueLoaderPlugin()
      ]
    }

【webpack4.0】---base.config.js基本配置(五)的更多相关文章

  1. webpack配置之webpack.config.js文件配置

    webpack配置之webpack.config.js文件配置 webpack.config.js webpack resolve  1.总是手动的输入webpack的输入输出文件路径,是一件非常繁琐 ...

  2. [转]webpack4.0.1安装问题和webpack.config.js的配置变化

    本文转自:https://blog.csdn.net/jiang7701037/article/details/79403637 The CLI moved into a separate packa ...

  3. 【webpack4.0】---dev.config.js基本配置(六)

    一.开发环境配置准备 1.创建dev.config.js文件 用来配置开发环境的代码 2.安装webpack-merge cnpm install webpack-merge -D 用来合并webpa ...

  4. webpack4.0.1安装问题和webpack.config.js的配置变化

    The CLI moved into a separate package: webpack-cli. Please install 'webpack-cli' in addition to webp ...

  5. vue3.0 vue.config.js 配置实战

    今天讲述一下vue-config.js配置,我们前面搭建好脚手架会发现,这个对比2.x版本少了很多东西,没有build的配置,也没有webpack的配置,那么问题来了,我们如何去开发我们的项目呢,比如 ...

  6. vue.config.js常用配置

    使用vue-cli3.0搭建项目比之前更简洁,没有了build和config文件夹. vue-cli3的一些服务配置都迁移到CLI Service里面了,对于一些基础配置和一些扩展配置需要在根目录新建 ...

  7. vue.config.js基础配置

    const path = require('path') const UglifyPlugin = require('uglifyjs-webpack-plugin') module.exports ...

  8. vue-cli3的vue.config.js文件配置,生成dist文件

    //vue.config.jsonconst path = require('path'); // const vConsolePlugin = require('vconsole-webpack-p ...

  9. Vue-Cli 3.0 + vue.config.js

    虽然一直没有亲手搭建过vue项目,但是2.0的时候就开始自学(但并没有实践项目).然后公司最近有个人用3.0做了个项目,公司让我参与进去,我就顺便学习了一把3.0.(美滋滋) 因为电脑的环境还是之前自 ...

随机推荐

  1. win10使用照片查看器查看图片

    1.关于 演示环境: win10 1909 2.习惯win7的照片查看器 如果你习惯使用win7的照片查看器在win10查看照片,可以通过下面的注册表代码实现.方法:1.创建 后缀名为 .reg的文件 ...

  2. 【LeetCode】761. Special Binary String 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址: https://leetcode.com/problems/special- ...

  3. Code(hdu5212)

    Code Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submis ...

  4. 计算机视觉1->opencv4学习指南1 | 环境配置与例程

    opencv虽然很有名,但是自己一直没怎么玩过,暑假的时候使用深度相机做项目,但负责的不是代码模块,也只是配好了环境,没有继续了解图像处理.最近电子实习老师有教这个东西,但是身边不少同学遇到了麻烦,所 ...

  5. Bristol大学密码学博士生的五十二个知识点

    Bristol大学密码学博士生的五十二个知识点 这个系列,是Bristol大学的密码安全工作组为密码学和信息安全相关的博士准备了52个基本知识点. 原地址:http://bristolcrypto.b ...

  6. Entropy, relative entropy and mutual information

    目录 Entropy Joint Entropy Conditional Entropy Chain rule Mutual Information Relative Entropy Chain Ru ...

  7. 使用 JavaScript 的 HTML 页面混合、JavaScript 文件引用和 HTML 代码嵌入 3 种方式在 HTML 页面上打印出“点击我进入到百度首页”的超链接

    查看本章节 查看作业目录 需求说明: 使用 JavaScript 的 HTML 页面混合.JavaScript 文件引用和 HTML 代码嵌入 3 种方式在 HTML 页面上打印出"点击我进 ...

  8. 如何跳出springboot的service层中某一个方法?

    有一个需求,就是中断某个方法中的for循环 目前的做法是:for循环中,增加if判断,如果满足条件就return,会中断这个方法 for (int i = 0; i < totalIndex; ...

  9. Drools集成SpringBootStarter

    1.说明 基于fast-drools-spring-boot-starter, 能够方便的将规则引擎Drools集成到Spring Boot, 基于前面介绍过的文章Drools集成SpringBoot ...

  10. 用一道题 来 复习 MySQL 的 复杂 sql 语句

    1.前言 太久没有在数据库做一些复杂的sql了,基本上将数据库的查询逻辑全放在了Java里做, 一来呢,可以减轻数据库的负担,二来呢,在java写,逻辑感会更强,数据类型更丰富也容易操作. 然而... ...