Webpack

Reference

1 安装

npm i -g wepack

2. 编写配置

遵循最基本的Nodejs书写规范

export default 12 … 导出整个模块就是12

export a 12 导出a

ES6 有import export属性,但是所有的浏览器都不支持

module.exports = {
    //
    entry: 'src/1.js',
    output: {

    }

}

./表示当前目录

默认叫 webpack.config.js
自定义文件名: webpack –config 你自己起的不知道什么名字


ES6 模块化

export default  // 作为模块本身被输出    

import xxx from '././'

export let a=12,b=5 // 输出模块的东西  import {a,b} from './'

webpack基本配置

module.exports = {
    entry: './src/1.js',
    output: {
        path: pathlib.resolve('dest/'), //输出目录
        filename: 'bundle.js' //输出文件名
    }

}

webpack的功能:解决ES6的语法,import export和打包的功能


多入口问题

module.exports = {
    entry: {
        名字: '入口文件地址',
        src: './src.js'
    },
    output: {
        path: pathlib.resolve('dist/'), //输出目录  entry:  __dirname + "/dist",
        filename: '[name].bundle.js' //name是一个占位符
    }
}

dev-server

帮助你在服务器环境下去测试页面

1. 安装

npm i webpack webpack-cli webpack-dev-server -D


#webpack-cli    是一个命令行工具
npm i -g webpack

#webpack        是一个库
npm i webpack

webpack-cli会提供命令行工具,server会用到cli

module.exports = {
    entry: {
        名字: '入口文件地址',
        src: './src.js'
    },
    output: {
        path: pathlib.resolve('dist/'), //输出目录
        filename: '[name].bundle.js' //name是一个占位符
    },
    devServer: {
        contentBase: path.resolve('static'), //静态文件,内容根目录
        port: 8090, //监听端口
        inline: true,  //刷新当前页面
        historyApiFallback: true   //利用HTML5 history API,所有的跳转将指向index.html
    }
}

2. 实时刷新 Dev-server

webpack-dev-server --inline --config 2.config.js  // 全页面刷新
webpack-dev-server --iframe --config 2.config.js  //页面嵌在iframe里面,刷新这个iframe
JS模块刷新
hot: true //热更新
plugins: [
    new Webpack.HotModuleReplacementPlugin() // 热更新模块
],

HTML
watch监听静态资源
npx webpack-dev-server --watch --inline --config webpack1.config.js

historyApiFallback: true 

在package.json中添加命令,快捷使用
“scripts”: {
“test”: “echo \”Error: no test specified\” && exit 1”,
“start”: “webpack”,
“server”: “webpack-dev-server –open”
},

start是特殊指令,可以直接npm start
其他命令要用 npm run server

3. webpack 插件 loader 翻译

配置选项:

  • test:一个用以匹配loaders所处理文件的拓展名的正则表达式(必须)
  • loader:loader的名称(必须)
  • include/exclude:手动添加必须处理的文件(文件夹)或屏蔽不需要处理的文件(文件夹)(可选);
  • query:为loaders提供额外的设置选项(可选)

babel-loader

用得最多的是解析Es6的babel-env-preset包和解析JSX的babel-preset-react包)。

  1. babel-loader 给webpack用的
  2. babel-core babel核心库
  3. babel-preset-env 环境预设
module: {
    rules: [
        {
            test: 正则,
            use: loader
        }
    ]
}

React
react react-dom

assets/ 放资源

css-loader


使用eval打包源文件模块,在同一个文件中生成干净的完整的source map。这个选项可以在不影响构建速度的前提下生成完整的sourcemap,但是对打包后输出的JS文件的执行具有性能和安全的隐患。在开发阶段这是一个非常好的选项,在生产阶段则一定不要启用这个选项

devtool: 'eval-source-map',

css

可以在js中import css文件,通常情况下,css会和js打包到同一个文件中,并不会打包为一个单独的css文件,不过通过合适的配置webpack也可以把css打包为单独的文件的。

处理css文件 使得只在当前页面有效,不污染全局

{
    test: /\.css$/,
     use: [
         {
             loader: "style-loader"
         }, {
             loader: "css-loader",
             options: {
                 modules: true, // 指定启用css modules
                 localIdentName: '[name]__[local]--[hash:base64:5]' // 指定css的类名格式
             }
         }
     ]
 }
postcss

postcss-loader 和 autoprefixer(自动添加前缀的插件)

{
     test: /\.css$/,
      use: [
          {
              loader: "style-loader"
          }, {
              loader: "css-loader",
              options: {
                  modules: true
              }
          }, {
              loader: "postcss-loader"
          }
      ]
  }

typescript 微软,
因为
1. JS太恶心,自身缺乏很多东西
2. 微软历史上就跟语言过不去。试图用ts统治世界

好处:
1. 补充了JS没有的特性——类型,抽象,接口
2. 严谨——胜任大型开发

ts-loader

安装:

npm -g i typescript

插件(Plugins)

loaders是在打包构建过程中用来处理源文件的(JSX,Scss,Less..),一次处理一个,插件并不直接操作单个文件,它直接对整个构建过程其作用

使用插件的方法
//给打包后代码添加版权声明的插件
plugins: [
   new webpack.BannerPlugin('版权所有,翻版必究')
],
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值