webpack安装和使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/YIDBoy/article/details/54562597

安装web pack

这里我们用到node.js的nam,如果没有下载的,可以到https://nodejs.org/en/先下载安装。

1.我们通过npm在全局环境下安装webpack:

npm install webpack -g

2.安装成功后,我们用终端输入命令行:

webpack —help

查看webpack提供所有的命令

3.现在开始构建我们的模块,先建一个文件夹,取名webpack_test(不要取webpack),在该文件夹下安装我们的局域webpack

npm install wegpack —save-dev

4.初始化项目

在根目录下输入命令行:

npm init -y

这时我们的文件下下有两个内容:
1.package.json文件(用于保存项目版本,依赖关系)
2.node_modules文件夹

我们再创建一个index.html文件,事例如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>webpack</title>
</head>
<body>

</body>
</html>

5.webpack的配置

我们的项目通常会有一个入口(entry)文件,将main.js当成这个入口,我们通过配置webpack来致命它的位置。
首先,在项目根目录中新建一个webpack.config.js,这是webpack默认的配置文件名称,添加如下内容:

module.exports = {
    entry:’./main.js’
}

如果在这时在终端运行webpack,会出现

Output filename not configured

因为我们少了一个指定输入文件的路径与名称
在webpack.config.js中添加一个output:

module.exports={
    entry:'./main.js',
    output:{
       path:__dirname, //输入文件的保存路径
       filename:'bundle.js'//项目生成的js,编译在该js里面
    }
}

现在在项目里运行webpack命令行,我们的根目录会多出一个bundle.js文件:
这里写图片描述

这里写图片描述

6.接下来,在index.tml中引用bundle.js文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>webpack</title>
    <script src="bundle.js"></script>
</head>
<body></body>
</html>

这样就安装成功了,并且可以开始使用了。

实时更新

webpack 提供了 webpack-dev-server 解决实时刷新页面的问题,同时解决实时构建的问题。

1.在全局环境中安装webpack-dev-server

npm install webpack-dev-server -g

在项目目录下输入命令行:

webpack-dev-server

这样,我们就可以在默认的 http://localhost:8080 网址上打开我们的 index.html
此时,我们可能认为事情是按以下顺序发生的:
1. js 文件修改;
2. webpack-dev-server 监控到变化;
3. webpack 在内存中重新构建 bundle.js;
4. webpack-dev-server 保证页面引用的 bundle.js 文件与内存中一致。

webpack-dev-server 提供了两种模式用于自动刷新页面:

iframe 模式:
我们不访问 http://localhost:8080,而是访问 http://localhost:8080/webpack-dev-server/index.html

inline 模式:
在命令行中指定该模式,webpack-dev-server –inline。这样 http://localhost:8080/index.html 页面就会在 js 文件变化后自动刷新了。

以上说的两个页面自动刷新的模式都是指刷新整个页面,相当于点击了浏览器的刷新按钮。

webpack-dev-server 还提供了一种 –hot 模式,有兴趣的可以去webpack官网学习。

加载器loaders

加载器是一个能编译你app资源文件的预加载器。例如:Babel-loader能编译JSX/ES6文件为JS文件。
1.建一个main.jsx:

const React = require('react');
const ReactDOM = require('react-dom');

ReactDOM.render(
  <h1>Hello, I am yidong!</h1>,
  document.querySelector('#main')
);

2.index.html:

<html>
  <body>
    <div id="main"></div>
    <script src="bundle.js"></script>
  </body>
</html>

3.webpack.config.js:

module.exports = {
  entry: './main.jsx',
  output: {
    filename: 'bundle.js'
  },
  module: {
    loaders:[
      {
        test: /\.js[x]?$/,
        exclude: /node_modules/,
        loader: 'babel-loader?presets[]=es2015&presets[]=react'
      },
    ]
  }
};

在webpack.config.js中,module.loaders领域被用于设定加载器。上面的片段用了babel-loader,它需求babel-preset-es2015和babel-preset-react插件来编译ES6和React.你也能采用另外一种方式设定babel查询选项

module: {
  loaders: [
    {
      test: /\.jsx?$/,
      exclude: /node_modules/,
      loader: 'babel',
      query: {
        presets: ['es2015', 'react']
      }
    }
  ]
}

CSS加载器 css-loader

Webpack允许你在JS文件中require CSS , 然后用CSS加载器预加载CSS,
1.安装 CSS 相关的加载器

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

2.配置 webpack.config.js 文件

  module.exports = {
  entry: './main.js',
  output: {
    filename: 'bundle.js'
  },
  module: {
    loaders:[
      { test: /\.css$/, loader: 'style-loader!css-loader' },
    ]
  }
};

3.在 main.js 文件中引入 index.css:

require('./index.css');

autoprefixer

我们在写 CSS 时,按 CSS 规范写,构建时利用 autoprefixer 可以输出 -webkit、-moz 这样的浏览器前缀,webpack 同样是通过 loader 提供该功能。
1.安装 autoprefixer-loader

npm install autoprefixer-loader --save-dev

2.配置 webpack.config.js

loaders: [{
    test: /\.css$/,
    loader: 'style!css!autoprefixer?{browsers:["last 2 version", "> 1%"]}',
  }]

基本的webpack使用就实现了。

猜你喜欢

转载自blog.csdn.net/YIDBoy/article/details/54562597