webpack的搭建使用

作为一名前端开发人员,说到脚手架的搭建,en,真香,但是真的仅仅的就会脚手架吗?No
有时候坚决自己使用webpack来搭架子,所以不说废话了,特发此文,以供大家共同学习成长

一.

1;全局安装和项目安装 
1 全局安装  npm install  webpack -g (不建议使用)

2:针对项目而言  先npm init初始化项目以后

2.1 npm install --save-dev webpack
2.2 npm install --save-dev webpack-cli   (4.0以下的版本不用安装webpack-cli)

3:项目中新建一个src目录 里面放一个index.js里面的内容随便写

4:package.json中配置script中加入
  "scripts": {
        "build": "webpack --mode production",
        "test": "echo \"Error: no test specified\" && exit 1"
    },
  
production 可以换成development     生产模式(线上要压缩处理)和开发模式(本地随便写)

写完以后启动
 运行  npm run build   就会发现项目中多出一个dist文件 里面有一个main.js
手工配置webpack

5.在项目中新建一个一个webpack.config.js文件
//写入基本配置就可以修改 入口文件
module.exports = {
    entry: "./src/leson.js", //如果文件 可以修改
    
}

设置出口文件
var path = require("path");

module.exports = {
    entry: "./src/leson.js", //如果文件 可以修改
    output: {
        path: path.resolve(__dirname, "dist"),
        filename: "leson.js"
    }
}

也可以多入口   入口需要变成变成对象写法
entry: {
        home: "./src/index.js",
        leosn: "./src/leson.js"
    },

也可以个配置出口进行hash混淆 指定hash长度  hash:8 就表示长度为8
  output: {
        path: path.resolve(__dirname, "dist"),
        filename: "[name].[hash:8].js"
    }

更可以根据模块生成不一样的hash  使用chunkHash代替hash

也可以指定webpack.congfig.js的位置 可以修改
   "build": "webpack --mode production --config scripts/webpack.config.js",


1:安装插件html-webpack-plugin 进行页面js自动引入更新

npm install  html-webpack-plugin --save-dev 

就会将指定的模板页面和指定的js引入生成到指定地方中去

1:在webpack.config.js中引入
var HtmlWebpackPlugin = require("html-webpack-plugin");

2:配置
   plugins: [
        new HtmlWebpackPlugin({
            title: "webpack",
            template: "public/index.html",
            chunks: ['main']
        }),
    ]

3:使用
     <title>
        <%= htmlWebpackPlugin.options.title %>
    </title>
</head>

<body>
    <div>我是模板页面</div>
</body>

结果
  <title>
        webpacktitle
    </title>
</head>

<body>
    <div>我是模板页面</div>
<script type="text/javascript" src="main.1e8b9d5e.js"></script></body>

1:新建文件index.css   里面随便写点样式

2:在index.js中引入index.css   (import "./index.css")

3:引入css-loader 

npm install --save-dev css-loader
npm install --save-dev  style-loader

4:配置中添加
module: {
    rules: [
      {
        test: /\.css$/i,
        use: ['style-loader', 'css-loader'],
      },
    ],
  }

然后运行 npm run build

但是css的引入会在js中  需要分离 才符合正常的阅读习惯

安装辅助 npm install --save-dev mini-css-extract-plugin

第一步引入
var MiniCssExtractPlugin = require('mini-css-extract-plugin');


第二步配置
  new HtmlWebpackPlugin({
            title: 'webpacktitle',
            template: "public/index.html",
            chunks: ['main']
        }),
        new MiniCssExtractPlugin({
            filename: '[name].[hash].css'
        })

第三步修改配置
 rules: [{
            test: /\.css$/i,
            use: [MiniCssExtractPlugin.loader, 'css-loader']
        }, ]

**启动服务
安装 服务
npm install webpack-dev-server --save-dev 
ps:基于express的服务器
然后在package.json中修改
  "scripts": {
        "build": "webpack --mode production",
        "dev": "webpack-dev-server --mode production",
        "test": "echo \"Error: no test specified\" && exit 1"
    },
启动命名 npm run  dev 就可以启动启动服务
自定义端口
在配置中
 devServer: {
        contentBase: './dist',
        port: 1234,
        open: true
    }**

**

1:安装 
npm install sass-loader node-sass  --save-dev

2:配置中加入 sass 重新编译就可以了
{
                test: /\.s[ac]ss$/i,
                use: [
                    MiniCssExtractPlugin.loader,
                    'css-loader',
                    'sass-loader',
                ],
            },

六.

官方文档
https://webpack.js.org/loaders/url-loader/#root
1
安装
npm install url-loader --save-dev

2使用
rules中添加

{
        test: /\.(png|jpg|gif)$/i,
        use: [
          {
            loader: 'url-loader',
            options: {
              limit: false,
  name: '/img/[name].[hash:8].[ext]'
            },
          },
        ],
      },


3:大图片就应该使用file-loader
安装    npm install file-loader --save-dev

配置
{
        test: /\.(png|jpe?g|gif)$/i,
        use: [
          {
            loader: 'file-loader',
          },
        ],
      },

1:安装转换插件

npm install --save-dev babel-loader @babel/core @babel/preset-env

2:配置 在rules中

{
            test: /\.js$/,
            exclude: /node_modules/, // 排除的目录
            // 使用babel-loader将ES6代码转为ES5,做浏览器兼容
            // 同时需要建立.babelrc文件,调用@babel/preset-env插件将E6转为E5S
            loader: "babel-loader"
          }

3:新建一个.babelrc的文件 里面写入
{
    "presets": ["@babel/preset-env"]
  }

4:重新编译在看效果 又es6的地方都变成了es5的写法

1:安装vue
npm  i  vue  --save

2:在main.js中引入vue
import Vue  from "vue";

new  Vue({
    el:"#app",
    data:{
        username:"leson"
    }
})

页面处
  <div id="app">
        {{username}}
    </div>


3:编译以后运行会报错
vue.runtime.esm.js:620 [Vue warn]: You are using the runtime-only build of Vue where the template compiler is not available. Either pre-compile the templates into render functions, or use the compiler-included build.

(found in <Root>)


4:原因  main引入的vue的路径 不对  不是一个相对路径  需要引入node_modules中的vue的安装目录



5:解决 在webpack.config.js中配置正确路径即可

1:安装 用来识别.vue的文件

npm i vue-loader vue-template-compiler -D

2:在webpack.config.js引入
const VueLoaderPlugin = require(‘vue-loader/lib/plugin’);

插件配置中加入

 new VueLoaderPlugin() 只加入这个即可

在这里插入图片描述

new VueLoaderPlugin() 只加入这个即可
完整的如下

3:在规则relus中加入

	{
	       test:/\.vue$/,
	       use:["vue-loader"]
	}

4:新建一个App.vue文件
在这里插入图片描述

5:使用在main.js中

在这里插入图片描述

6:public的index文件夹中

在这里插入图片描述

7:打包的效果为

在这里插入图片描述

好了基本的架子是搭建起来了,后续的操作根据自己的需求哦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值