webpack小结

此文主要是为了举例webpack的一些简单使用说明,它是基于nodejs环境。如果想更深入了解可以看webpack中文网站

目录

1、初始化
2、编写入口文件 entry.js
3、loader加载器
4、配置webpack.config.js文件
5、babel使用转化ES6语法
6、webpack-dev-server热加载服务
7、react配置

1、初始化

//以下命令都是在终端下执行
npm install webpack -g  //全局安装webpack环境
webpack --version   //查看是否有安装
npm init -y   //初始化项目文件夹,增加package.json文件
npm install webpack -D  //局部安装, -D等价于 --save-dev

2、编写入口文件 entry.js

//在项目根目录下分别新增index.html和entry.js
//index.html
//entry.js let oApp = document.getElementById('app'); oApp.innerHTML = '

welcome Webpack

'; //终端下执行 webpack entry.js bundle.js

3、loader加载器

//webpack默认只支持javascript文件,其它文件需要用加载器(loader)
//loader类似一种转化器, 它可以把一个东西,转成另一个
//没有转化的情况下会提示 You may need an appropriate loader to handle this file type.
//例如css文件: style-loader 和 css-loader
npm install style-loader css-loader -D  //安装loader依赖包

//entry.js文件内容
let oApp = document.getElementById('app');
//注意: 在webpack中,多个loader加载用!隔开, 引入文件需要带上后缀,如果有配置resolve,可以省略后缀,例如./style
require('style-loader!css-loader!./style.css');  //webpack1.0可以省略-loader, 2.0不允许
oApp.innerHTML = '

welcome Webpack

'; //根目录下新增style.css文件 body{ background:#399; color: #fff; font-size: 40px; text-shadow: 2px 2px 5px #000; } //终端下执行 webpack entry.js bundle.js

4、配置webpack.config.js文件

//根目录下新增webpack.config.js
//如果就不用webpack.config.js,自己定义名字config.js
//终端运行需要指定文件:  webpack --config config.js
//webpack.config.js
module.exports = {
    entry: './entry.js', //入口文件
    output: {
        filename: 'bundle.js' //出口
    },
    devtool: 'source-map', //直接生成source-map,作用跟webpack -d一样
    module: {
        loaders: [{
            test: /\.css$/,
            loader: 'style-loader!css-loader'
        }]
    },
    resolve: {
        //"extensions": ['', '.js', '.css', '.json', '.jsx']  //可以省略后缀名,注意这是webpack1.0
        "extensions": ['.js', '.css', '.json', '.jsx']  //注意这是webpack2.0,不允许加上'',
    }
};

//entry.js
let oApp = document.getElementById('app');
require('./style.css');
oApp.innerHTML = '

welcome Webpack

'; //终端下执行查看效果,这里因为配置出入口文件名,可以省略 webpack //注意以下命令模式的区别 webpack //开发环境下编译(打包) webpack -p //生产环境下编译(压缩) webpack -w //监听文件改动,自动编译(速度快) webpack -d //开启(生成)source maps(用来调试) webpack -wpd //同时开启多个模式

5、babel使用转化ES6语法

//安装相关依赖
npm install babel-loader babel-core babel-preset-es2015 -D
//导出模块: export default {}
//引入模块: import 名字 from 模块名

//项目根目录新增module.js
//module.js
export default {
    a: 1,
    b: 2
}

//entry.js
import modB from './module'
let oApp = document.getElementById('app');
require('./style.css');
oApp.innerHTML = '

welcome Webpack

' + (modB.a + modB.b); //webpack.config.js module.exports = { entry: './entry.js', //入口文件 output: { filename: 'bundle.js' //出口 }, devtool: 'source-map', //直接生成srouce-map module: { loaders: [{ test: /\.css$/, loader: 'style-loader!css-loader' }, { test: /\.js$/, loader: 'babel-loader', //webpack2.0不能省略-loader exclude: /node_modules/, //排除那些目录 options: { //webpack2.0写法 'presets': ['es2015'] } }] } // babel: { //webpack1.0写法 // "presets": ['es2015'] // } }; //配置babel预设,可以直接在webpack.config.js配置,也可以新增.babelrc文件配置 touch .babelrc //在项目根目录新增一个.babelrc文件 //.babelrc文件内容 { "presets":['es2015'] } //终端下执行webpack查看效果 webpack

6、webpack-dev-server热加载服务

//安装热加载服务依赖
npm install webpack-dev-server -g
//第一种方式开启服务,注意参数
webpack-dev-server --port 8088  端口号
webpack-dev-server --inline 改变完代码以后,自动刷新浏览器
webpack-dev-server --hot    热重载(局部更改)
//终端下执行
webpack-dev-server --inline --port 8088

//第二种方式,修改webpack.config.js配置文件
module.exports = {
    entry: './entry.js', //入口文件
    output: {
        filename: 'bundle.js' //出口
    },
    devtool: 'source-map', //直接生成srouce-map
    devServer: {
        port: 8088,
        inline: true //注意:不写hot: true,否则浏览器无法自动更新;也不要写colors:true,progress:true等,webpack2.x已不支持这些
    },
    module: {
        loaders: [{
            test: /\.css$/,
            loader: 'style-loader!css-loader'
        }, {
            test: /\.js$/,
            loader: 'babel-loader',
            exclude: /node_modules/ //排除那些目录
        }]
    }
};
//终端下执行
webpack-dev-server

//第三种方式,修改package.json配置文件
"scripts": {
    "dev": "webpack-dev-server --inline  --port 8088"
}
//终端下执行
npm run dev

7、react配置

//安装react预设和热加载
npm install babel-preset-react react-hot-loader -D
//安装react环境
npm install react react-dom -D
//新增list.js作为一个组件
//list.js
import React from 'react'
class List extends React.Component {
    render() {
        return 
我是React-List组件
} } export { List as default } //.babelrc { "presets":[['es2015'],['react']] } //webpack.config.js module.exports = { entry: './entry.js', //入口文件 output: { filename: 'bundle.js' //出口 }, devtool: 'source-map', //直接生成srouce-map devServer: { port: 8088, inline: true }, module: { loaders: [{ test: /\.css$/, loader: 'style-loader!css-loader' }, { test: /\.js$/, loader: 'react-hot-loader!babel-loader', //注意react-hot-loader需要用旧版本1.3.0才可以 exclude: /node_modules/ //排除那些目录 }] }, resolve: { "extensions": ['.js', '.css', '.json', '.jsx'] //可以省略后缀名 } };

你可能感兴趣的:(webpack小结)