一小时入门webpack

webpack现在已经成为了大众化的项目必要脚手架,基本上现在的很多项目都需要webpack,由于webpack的出现glup和grunt已经完败,今天我们来说一下webpack如何使用。

首先我们需要包依赖,npm init初始化package.json,我们只需要把我们需要的东西引入就可以了,代码如下:

{
  "name": "",
  "version": "1.0.0",
  "description": "",
  "main": "",
  "scripts": {
    "test": "",
    "build": "webpack -p",
    "dev": "webpack -w"
  },
  "author": "",
  "license": "",
  "devDependencies": {
    "babel-core": "^6.20.0",
    "babel-loader": "^6.2.9",
    "babel-plugin-transform-runtime": "^6.15.0",
    "babel-polyfill": "^6.13.0",
    "babel-preset-es2015": "^6.18.0",
    "babel-preset-stage-0": "^6.16.0",
    "babel-runtime": "^6.20.0",
    "crypto": "*",
    "happypack": "^3.0.2",
    "css-loader": "^0.23.1",
    "es6-promise": "*",
    "extract-text-webpack-plugin": "^1.0.1",
    "fetch-polyfill": "^6.13.0",
    "file-loader": "^0.9.0",
    "node-sass": "^3.13.1",
    "sass-loader": "^4.0.2",
    "style-loader": "^0.13.1",
    "url-loader": "^0.5.7",
    "vue": "^2.0.5",
    "vue-hot-reload-api": "^2.0.6",
    "vue-html-loader": "^1.2.3",
    "vue-awesome-swiper": "*",
    "vue-loader": "^8.5.4",
    "vue-style-loader": "^1.0.0",
    "webpack": "^1.13.3",
    "webpack-dev-server": "^1.16.2",
    "webpack-merge": "^0.14.1"
  },
  "dependencies": {
    "babel-polyfill": "^6.20.0",
    "fetch-polyfill": "^0.8.2",
    "vue-lazyload": "^1.0.0-rc7"
  }
}
scripts下面是命名npm运行,只要我们npm run build就会执行webpack -w
devDependencise 里面是所有的开发环境依赖包
deoendencies 里面是所有的生产环境的依赖包
也就是我们开发需要的东西都依赖在dev下,这样我们在电脑上执行npm install就会把所有的dev依赖全部安装下来
我们配置的相面的npm之后我们就可以配置webpack的config了
我们新建一个webpack.config.js代码如下
var webpack = require('webpack');
var ExtractTextPlugin = require("extract-text-webpack-plugin");

module.exports = {
    entry:{
        home:'./source/javascript/home.config.js'
    },
    output:{
        path:'dist/',
        filename:'[name].js'
    },
    module:{
        loaders:[
            {
                test: /\.scss$/,
                loader: ExtractTextPlugin.extract('style','css!sass')
            },
            {
                test: /\.es6$/,
                loader: "babel-loader",
                    query:{
                        presets:['es2015']
                    }
            },
            {test:/\.css$/, loader: ExtractTextPlugin.extract("style-loader", "css-loader?-autoprefixer")},
            { test: /\.vue$/, loader: 'vue'}
        ]
    },
    plugins:[
        new ExtractTextPlugin("[name].css"),
    ]
};

当我们运行npm run dev的时候,就会执行到这个文件

var webpack = require('webpack');
var ExtractTextPlugin = require("extract-text-webpack-plugin");

第一行代码为了把webpack引入到当前文件中,webpack我们之前npm install的时候已经加载到node_modules中

第二行代码是为了打包css文件,编译sass,acss,less等,他还有一个更好的优点就是postcss处理自动添加适应不同css浏览器的前缀。

之后我们只需要开始写webpack的配置:

module.exports = {
    entry:{//项目入口,文件从这里进入
        home:'./source/javascript/home.config.js'
    },
    output:{//项目出口,压缩到这个目录下
        path:'dist/',
        filename:'[name].js'
    },
    module:{//添加一些我们需要依赖的loaders,注意:所有我们需要的依赖都需要写在package.json中然后install进入到项目里面
        loaders:[
            {//将scss编译成css压缩文件
                test: /\.scss$/,
                loader: ExtractTextPlugin.extract('style','css!sass')
            },
            {//将所有的es6语法编译成es5语法,注意:这里babel的配置可以卸载query中,但是还是推荐自己新建一个.babelrc来配置
                test: /\.es6$/,
                loader: "babel-loader",
                    query:{
                        presets:['es2015']
                    }
            },
            {test:/\.css$/, loader: ExtractTextPlugin.extract("style-loader", "css-loader?-autoprefixer")},
            { test: /\.vue$/, loader: 'vue'}//编译vue
        ]
    },
    plugins:[//引入需要的组件,例如我们react项目,我们需要阿里开发的ant样式库,我们需要install到项目中,之后配置到webpack这个位置
        new ExtractTextPlugin("[name].css"),
    ]
};

babelrc配置:

{
  "presets": ["es2015", "stage-0", "react"]
}

es2015:表示转移es6语法

stage-0:表示es7语法天的转码规则一共有四个阶段(推荐使用2,虽然没有太大区别)

当然我们可能有的项目也会需要用到eslint,他和babel是类似的也是需要一个.eslintrc文件

{
  "plugins": [
    "babel"
  ],
  "rules": {
    "arrow-parens": 0,
    "babel/arrow-parens": 2,
    "no-console": 0,
    "no-const-assign": 2
  }
}

当你把所有都配置好之后,我们只需要运行npm run dev命令,我们就会吧自己的js,vue压缩到对应的dist目录中,我们在页面只需要引入dist中js和css就实现了资源压缩的目的

posted @ 2017-02-16 11:57  JcScript  阅读(783)  评论(0编辑  收藏  举报