webpack 环境安装

1、首先要安装 Node.js, Node.js 自带了软件包管理器 npmWebpack 需要Node.js v0.6 以上支持,建议使用最新版 Node.js

2、安装Webpack 到全局环境下 :

npm install webpack -g //(可以通过命令行 webpack -h 或webpack -v 验证)

3、将 Webpack 安装到实际项目的依赖中,这样就可以使用项目本地版本的 Webpack。

 npm install webpack --save-dev  //查看 webpack 版本信息 : npm info webpack
 //安装指定版本的 webpack: npm install [email protected] --save-dev

4、确定是否有 package.json,没有就通过 npm init 创建

5、安装Loader转换器(只需要在本地安装,不需 -g)(Webpack 本身只能处理原生的 JavaScript 模块,但是 loader 转换器可以将各种类型的资源转换成 JavaScript 模块。这样,任何资源都可以成为 Webpack 可以处理的模块。)

//常用的转换插件
npm install css-loader style-loader//转换CSS 
npm install postcss-loader --save-dev
npm install url-loader  //转换图片
npm install expose-loader --save-dev //暴露
npm install babel-loader babel-core 或 npm install jsx-loader  // jsx转换
npm install less less-loader --save-dev //
npm install babel-preset-es2015  //ECMAScript6语法依赖

6、配置

var webpack = require('webpack');
var commonsPlugin = new webpack.optimize.CommonsChunkPlugin('common.js');

module.exports = {
    //页面入口文件配置
    entry: {
        index : './src/js/page/index.js'
    },
    //入口文件输出配置
    output: {
        path: 'dist/js/page',
        filename: '[name].js'
    },
    module: {
        //加载器配置
        loaders: [
            //.css 文件使用 style-loader 和 css-loader 来处理
            { test: /\.css$/, loader: 'style-loader!css-loader!postcss-loader' },
            //.less 转换loader
            { test: /\.less$/, loader: "style-loader!css-loader!less-loader" },
            //.scss 文件使用 style-loader、css-loader 和 sass-loader 来编译处理
            { test: /\.scss$/, loader: 'style!css!sass?sourceMap'},
            //.js 文件使用 jsx-loader 来编译处理
            { test: /\.jsx$/, loader: 'jsx-loader?harmony' },
            //图片文件使用 url-loader 来处理,小于8kb的直接转为base64
            { test: /\.(png|jpg)$/, loader: 'url-loader?limit=8192'},
            //ECMAScript6语法依赖
            { test: /\.jsx?$/,
              exclude: /node_modules/, 
              loader: 'babel',
              query: {presets: ['es2015', 'react']
            }
         }
        ]
    },
    //插件项
    plugins: [commonsPlugin],
    //其它解决方案配置(webpack 有一个智能解析器,几乎可以处理任何第三方库,无论它们的模块形式是 CommonJS、 AMD 还是普通的 JS 文件。甚至在加载依赖的时候,允许使用动态表达式 require("./js/my.js"),但是这样过于复杂,我们可以通过这个配置项使得后面开发工作更加方便。)
    resolve: {
        //root: 'E:/github/flux-example/src', //绝对路径
        //自动扩展文件后缀名,意味着我们require模块可以省略不写后缀名
        extensions: ['', '.js', '.json', '.scss'],
        //模块别名定义,方便后续直接引用别名,无须多写长长的地址
        alias: {
            my: './js/my.js', //后续直接 var 标识符 = require('my') 即可 //标识符首字母不强要求大小写,eg:my 或 My
            api: './api.js'
        }
    }
};

⑴ plugins 是插件项,这里我们使用了一个 CommonsChunkPlugin 的插件,它用于提取多个入口文件的公共脚本部分,然后生成一个 common.js 来方便多页面之间进行复用。

⑵ entry 是页面入口文件配置,output 是对应输出项配置(即入口文件最终要生成什么名字的文件、存放到哪里)。

猜你喜欢

转载自my.oschina.net/u/2395167/blog/789731