zoukankan      html  css  js  c++  java
  • webpack--react配置

    当今一般都流行脚手架使用,所以一般reactvueangular官网都有推荐的安装方式,

    react有好几种,一般是react-cli或自己配置。

    package.json

    {
      "name": "test",
      "version": "1.0.0",
      "description": "测试",
      "main": "index.js",
      "scripts": {
        "test": "echo "Error: no test specified" && exit 1",
        "start": "Webpack-dev-server"
      },
      "author": "zhangzhicheng",
      "license": "ISC",
      "dependencies": {
        "react": "^16.2.0",
        "react-dom": "^16.2.0"
      },
      "devDependencies": {
        "babel-cli": "^6.26.0",
        "babel-core": "^6.26.0",
        "babel-loader": "^7.1.4",
        "babel-plugin-react-html-attrs": "^2.1.0",
        "babel-preset-env": "^1.6.1",
        "babel-preset-react": "^6.24.1",
        "css-loader": "^0.28.7",
        "extract-text-webpack-plugin": "^3.0.2",
        "html-webpack-plugin": "^2.30.1",
        "less": "^3.0.1",
        "less-loader": "^4.1.0",
        "postcss-loader": "^2.0.9",
        "style-loader": "^0.19.1",
        "webpack": "^3.10.0",
        "webpack-dev-server": "^2.9.7"
      }
    }

    webpack.config.js

    const debug = process.env.NODE_ENV !== "production";
    const webpack = require('webpack');
    const path = require('path');
    
    module.exports = {
      entry: './src/index.js',
      output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'bundle.js'
      },
      module: {
          rules: [
            {
              test: /.js$/,
              exclude: /(node_modules|bower_components)/,
              use: {
                loader: 'babel-loader'
              }
            },
            {
            test: /.css$/,
            use: [
              'style-loader',
              { loader: 'css-loader', options: { importLoaders: 1 } },
              {
                  loader: 'postcss-loader',
                  options: {
                    ident: 'postcss',
                    plugins: (loader) => [
                      require('autoprefixer')()
                    ]
                  }
                }
                ]
            },
            {
            test: /.less$/,
            use: [
              'style-loader',
              { loader: 'css-loader', options: { importLoaders: 1 } },
              {
                  loader: 'postcss-loader',
                  options: {
                    ident: 'postcss',
                    plugins: (loader) => [
                      require('autoprefixer')()
                    ]
                  }
                },
                'less-loader',
            ]
          }
          ]
        },
        devServer: {
          contentBase: path.join(__dirname, "dist"),
          compress: true,
          port: 9000,
          hot: true,
          inline: true
        },
        plugins: [
        new webpack.optimize.DedupePlugin(),
        new webpack.optimize.OccurrenceOrderPlugin(),
        new webpack.optimize.UglifyJsPlugin({ mangle: false, sourcemap: false }),
        new webpack.HotModuleReplacementPlugin()
      ]    
    };
    
    
    /*
    以上是使用less+babel+react配置
    
    启动webpack-dev-server配置devServer
    
    基本上配置webpack都去官网和各模块官网复制粘贴就可以了,都有推荐配置
    
    而postcss-loader这个自定义一些css预处理方式,可以和lesssassstylus配合使用
     */
    
    /*如果你使用了一些有着很酷的依赖树的库,
    那么它可能存在一些文件是重复的。webpack可以找到这些文件并去重。
    这保证了重复的代码不被大包到bundle文件里面去,取而代之的是运行时请求一个封装的函数
    webpack.optimize.DedupePlugin()
    
    根据模块调用次数,给模块分配ids,常被调用的ids分配更短的id,使得ids可预测,降低文件大小,该模块推荐使用
    OccurrenceOrderPlugin
    
    压缩js
    UglifyJsPlugin
    
    热替换模块,使用热替换使用的
    HotModuleReplacementPlugin
    */

    webpack使用3版本,因为4版本不稳定。

    .babelrc

    {
      "presets": ["react","env"],
      "plugins": [
        "react-html-attrs"
      ]
    }
    使用react-html-attrs,因为react不能正常使用class,react都是使用ES6 clas类编写组件的和使用jsx,html的class会和ES6的冲突,
    所以使用react-html-attrs解决,这就可以使用class在jsx的html里。



    postcss插件资料
    postcss插件资料2
  • 相关阅读:
    scrapy爬虫框架
    MongoDB分组查询,聚合查询,以及复杂查询
    mac重启iterm后不会自动加载.bash_profile
    Linux 之 2>&1
    linux下利用nohup后台运行jar文件包程序
    【intellij idea】汇总
    JAVA虚拟机体系结构
    JDK > JRE > JVM
    依赖注入(IOC) 详解
    mysql 忘记密码 登陆+修改密码
  • 原文地址:https://www.cnblogs.com/zhangzhicheng/p/8537581.html
Copyright © 2011-2022 走看看