webpack

前端资源模块化管理和打包工具 代码分隔按需加载=>loader转换 >>grunt gulp browerify 处理依赖关系和加载顺序
lodash>>understore>>backbone 方法库
1.webpack-dev-server易于部署的开发服务器 webpack-dev-server --open=="scripts": {"start": "webpack-dev-server"}
进度条命令 webpack --progress --watch
2.webpack.config.js配置文件
const config={
    // 入口entry: string|Array<string> entry:''||[]
    // 对象语法
    // 单个属性入口
    entry:{
        main:''
    } 
    // 可扩展的配置
    entry:{
        app:'./src/app.js',// 应用程序入口
        vendors:'./src/vendors.js' // 公共库入口
    }
    // 输出
    output:{
        filename:'bundle.js',
        path:__dirname+'/build' path.resolve(__dirname,'build')
        // 写入到./build/bundle.js
    }
    // 替换 
    [id] [name] [hash] [chunkhash]
    // 加载器loader css/ts-loader
    module:{
        rules: [
        {test: /\.css$/, use: ['css-loader'](/loaders/css-loader)},
        {test: /\.ts$/, use: ['ts-loader'](https://github.com/TypeStrong/ts-loader)}
        ]
        ==>等价于
        {test: /\.css$/, [loader](/configuration/module#rule-loader): 'css-loader'}
        // or equivalently
        {test: /\.css$/, [use](/configuration/module#rule-use): 'css-loader'}
        // or equivalently
        {test: /\.css$/, [use](/configuration/module#rule-use): {
        loader: 'css-loader',
        options: {}
        }}
    }
    // 使用loader的三种方式
    1.简明方式
    module: {
    rules: [
      {
        test: /\.css$/,
        // loaders:['style-loader','css-loader']
        use: [
          { loader: 'style-loader'},
          {
            loader: 'css-loader',
            options: {
              modules: true
            }
          }
        ]
      }
    ]
  }
  2.require使用!分隔
  require('style-loader!css-loader?modules!./styles.css');
  3.命令行接口cli
  webpack --module-bind jade --module-bind 'css=style!css'
  这会对 .jade 文件使用 jade-loader,对 .css 文件使用 style-loader 和 css-loader。
  // 插件plugins 需要new实例
  // 构建目标target hmr重载热更新
  // 处理自动补全后缀
      resolve: {
        modules: [path.resolve(__dirname, "common"), path.resolve(__dirname, "util"), "node_modules"],
        extensions: [".js", ".json", ".jsx"],
        mainFiles: ["index"]
    },
 }
module.exports=config
node js commonjs模块 全局安装webpack会锁定版本
npm 标准配置打包
"scripts": {
    "build": "webpack --config webpack.config.js"
}
webpack         // 最基本的启动webpack的方法
webpack -w      // 提供watch方法;实时进行打包更新
webpack -p      // 对打包后的文件进行压缩
webpack -d      // 提供source map,方便调式代码
整体的搭建依赖于已存在
如果依赖不存在,或者引入顺序错误,应用程序将功能异常。
如果引入依赖但是并没有使用,那样就会存在许多浏览器下载好却无用的代码。
代码分离对应不同的bundle
ExtractTextWebpackPlugin来分离css。webpack -p