Webpack入门--构建web前端工程的利器

2017-10-28  本文已影响0人  yohn

本文涉及到的知识点:

  • webpack的长处与特色
  • webpack基础知识
  • package.json

零、What is Webpack?

1. What?

2. Why?

一、Getting Started

1. 安装

mkdir webpack-demo && cd webpack-demo //创建并打开根目录
npm init -y  //初始化package.json文件
npm install --save-dev webpack //安装webpack并加入配置文件列表

2. 利用webpack指令简单打包

将source code(./src)与distribution code(./dist)分离,source code由我们编辑,distrbution code是我们构建过程总的最优化输出,并且distrbution code是被浏览器加载的最终文件。

webpack-demo
  |- package.json
  |-node_modules
  |- /dist //source code
    |- index.html
  |- /src  //distribution code
    |- index.js
output_1

3. Using a Configuration

通过使用配置文件代替直接的配置指令

webpack-demo
  |- package.json
+ |- webpack.config.js
  |- /dist
    |- index.html
  |- /src
    |- index.js
const path = require('path');

module.exports = {
    entry:'./src/index.js',
    output: {
        filename:'bundle.js',
        path:path.resolve(__dirname,'dist')
    }
};
output_2

二、package.json

1. JSON对象速览

方法

  • JSON.stringify(par1,par2,par3):将一个值转为字符串。该字符串符合 JSON 格式,并且可以被JSON.parse方法还原
  • obj.toJSON():如果有对象有自定义的toJSON方法,则JSON,stringify会使用这个方法的返回值作为参数
  • JSON.parse():用于将JSON字符串转化成对象

2. package.json

package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)

"scripts": {
    "preinstall": "echo here it comes!",
    "postinstall": "echo there it goes!",
    "start": "node index.js",
    "test": "tap test/*.js"
}
install express --save  //--save参数表示将该模块写入dependencies属性
install express --save-dev  //--save-dev表示将该模块写入devDependencies属性

三、Loaders

webpack把所有的文件当成(.css .html .less .jpg .etc)当做一个module,可是webpack自身只能理解Javascript,因此需要loader作为各个模块资源的转换器,loader本身实质上是一个函数,接受源文件作为参数,返回转换的结果。这样,我们就可以通过 require 来加载任何类型的模块或文件,比如CoffeeScript、JSX、LESS或图片。

1.Loader features

2. Resolve loaders

3.installation

npm install --save-dev css-loader
npm install --save-dev ts-loader

4.Using Loaders

使用loaders的三种方法:1.configuration 2.inline 3.CLI

module: { 
rules: [ { test: /\.css$/,
           use: [ { loader: ['style-loader']  }, 
                    { loader: ['css-loader'] , options: { modules: true } } ] } ] }
  1. !为使用loader的标记,!前为loader模块名称,!后为需要编译的文件.
  2. loader模块既可以使用相对路径引用,又可以使用绝对路径引用
  3. 可以用链式调用,如下例先通过css-loader,后通过style-loader
  4. ?key=value&foo=bar?{"key":"value","foo":"bar"}表示所设参数
 import Styles from 'style-loader!css-loader?modules!./styles.css';
webpack --module-bind jade-loader --module-bind 'css=style-loader!css-loader'

5.使用loader加载顺序

四、Plugins

利用plugins可以执行许多loaders无法实现的操作和自定义功能,plugins有两种获取途径:一种是webpack本身内置的,另一种需要通过npm安装第三方插件

使用plugins,你需要:
1.在头文件引入require模块;
2.在module.exports中引入plugins数组。

//webpack.config.js
const HtmlWebpackPlugin = require('html-webpack-plugin'); //安装第三方插件
const webpack = require('webpack'); //获取内置插件

plugins: [
    new webpack.optimize.UglifyJsPlugin(),
    new HtmlWebpackPlugin({template: './src/index.html'})
  ]//需要用new操作符创建新对象

五、Webpack CLI

参见Webpack入门 --唐紫依

参考资料

上一篇 下一篇

猜你喜欢

热点阅读