webpack 学习笔记

基于 node 环境, 必须确保 node 已经安装好了。
验证: node -v
npm -v

一些小命令积累: {
    $ npm install -g cnpm --registry=https://registry.npm.taobao.org (cnpm代替npm)
    cls: 清除(cmd中的命令)
    clear: 清除(git中的命令)
}

安装 webpack:

1. 安装 webpack 命令环境

终端: cnpm install webpack -g
验证: webpack --version


2. package.json 工程文件(需要依赖模块,库描述,版本,作者...)

终端: npm init
验证: 生成 package.json 文件


3. 安装本地 webpack

终端: cnpm install webpack -D 解释: (-D 等价于 --save-dev, 会配置到 webpack.json 的 devDependencies 属性中; --save, 会配置到 webpack.json 的 dependencies 属性中)
验证: 本地文件下多了个 node_modules 目录


`````````````````````````````````````````````````````````````
webpack 使用:

1) webpack 第一个小例子:

准备:
index.html 首页文件 (编写页面, 载入bundle.js,它是通过webpack编译打包的)
entry.js 入口文件 (编写js源码)

说明: entry.js的源码通过编译打包后,被index.html引入。

怎么编译 entry.js 文件 ?
终端: webpack entry.js bundle.js (必须当前目录下)

 

2) webpack 第二个小例子(自动解决依赖commonJs规范):

准备:
exports1.js 模块文件,然后被 entry.js 引入,然后 webpack entry.js bundle.js 编译打包成 bundle.js, 遵循commonJs规范。

 

3) webpack 默认只支持 javascript 文件模块化

要转化css或者图片等其他,需要用加载器(loader),
loader类似一种转化器, 他可以把一个东西转成另一个东西

载入css文件:
准备:
style.css 被entry.js引入,然后编译打包, 但是不能直接编译css文件。

需要安装2个模块:
style-loader
css-loader
终端: cnpm install style-loader css-loader -D
使用: require('style!css!./style.css')或者require('style-loader!css-loader!./style.css'); 说明: 在webpack中多个loader加载使用 ! 连接


4) 配置 webpack.config.js 使用很方便 (每次编译打包都使用 webpack entry.js bundle.js 麻烦)

作用: 配置一些 webpack 需要的入口, 出口, loader

webpack 终端一些命令:
webpack 开发环境下编译(打包)
webpack -p 生产环境下编译(压缩)
webpack -w watch监听文件改动,自动编译(速度快,只要在浏览器点击刷新,即可刷新了,不需要webpack一下)
webpack -d 开启(生成)source maps(对我来说是必须的,我要调试,哈哈)

webpack -dwp 一次性都开启(就这么一个命令就够了)

但是webpack.config.js中配置了 devtool: 'source-map', 所以以后直接用 webpack -wp 即可


5) Es6 -> babel转化

babel使用:
终端: cnpm install babel-loader babel-core babel-preset-es2015 -D

安装完,不一定可以使用,需要配置如下:

配置babel预设:
1). webpack.config.js
babel: {
    "presets": ["es2015"]
} // 不推荐
2). babelrc配置 通过 touch .babelrc 生成
{
    "presets": ['es2015']
}

 

`````````````````````````````````````````````````````````````

webpack.config.js 配置

module.exports = {
    entry: './js/entry.js',
    output: {
        filename: 'js/bundle.js'
    },
    devtool: 'source-map',
    module: {
        loaders: [{
            test: /\.css$/,
            loader: 'style!css'
        }, {
            test: /\.js$/,
            loader: 'babel',
            exclude: /node_modules/
       }]
    }
};

 

posted @ 2017-02-28 15:30  Sorrow.X  阅读(242)  评论(0编辑  收藏  举报