• Resct配置less


    配置less

    安装less-loader

     

    yarn add less-loader

    打开 webpack.config.dev.js 和 webpack.config.prod.js

    找到  test: /.css$/修改为  test: /.(css|less)$/, 

    找到 text 字段下的 use ,给use数组在添加一个对象 { loader: require.resolve('less-loader')}

    重启服务

    启用css作用域(css只对本页面生效)

    打开 webpack.config.dev.js 和 webpack.config.prod.js

    找到 loader: require.resolve('css-loader') 下的  options 字段, 给这个对象新增一个字段 modules: true

     

    页面调用

    import style from './style.less'
    console.log(style) // class名均为style对象的key,所以调用必须使用style.App
    render() {return ( <div className={style.App}> </div> ) }

     

    重启服务 & 查看效果

    px转换成rem

    安装 postcss-px2rem

    yarn add postcss-px2rem

    打开 webpack.config.dev.js 和 webpack.config.prod.js

     

    // 调用postcss-px2rem
    const px2rem = require('postcss-px2rem')

    在css-loader中找到  autoprefixer  这个属性,在这个属性之后添加  px2rem({ remUnit: 75 })

    autoprefixer({
      browsers: [
        '>1%',
        'last 4 versions',
        'Firefox ESR',
        'not ie < 9' // React doesn't support IE8 anyway
      ],
      flexbox: 'no-2009'
    }),
    px2rem({ remUnit: 75 }) 

    重启服务 & 查看效果

    附 : 完整代码

    webpack.config.dev.js

     

    // webpack.config.dev.js
    {
      test: /.(css|less)$/,
      use: [
        require.resolve('style-loader'),
        {
          loader: require.resolve('css-loader'),
          options: {
            importLoaders: 1,
            modules: true // 是否启动css局部作用域
          }
        },
        {
          loader: require.resolve('postcss-loader'),
          options: {
            // Necessary for external CSS imports to work
            // https://github.com/facebookincubator/create-react-app/issues/2677
            ident: 'postcss',
            plugins: () => [
              require('postcss-flexbugs-fixes'),
              autoprefixer({
                browsers: [
                  '>1%',
                  'last 4 versions',
                  'Firefox ESR',
                  'not ie < 9' // React doesn't support IE8 anyway
                ],
                flexbox: 'no-2009'
              }),
              px2rem({ remUnit: 75 }) //设计稿根据750px(iphone6)
            ]
          }
        },
        {
          loader: require.resolve('less-loader')
        }
      ]
    },

     

    webpack.config.prod.js

    // webpack.config.prod.js
    {
      test: /.(css|less)$/,
      loader: ExtractTextPlugin.extract(
        Object.assign(
          {
            fallback: {
              loader: require.resolve('style-loader'),
              options: {
                hmr: false
              }
            },
            use: [
              {
                loader: require.resolve('css-loader'),
                options: {
                  importLoaders: 1,
                  modules: true, // 是否启动css局部作用域
                  minimize: true,
                  sourceMap: shouldUseSourceMap
                }
              },
              {
                loader: require.resolve('postcss-loader'),
                options: {
                  // Necessary for external CSS imports to work
                  // https://github.com/facebookincubator/create-react-app/issues/2677
                  ident: 'postcss',
                  plugins: () => [
                    require('postcss-flexbugs-fixes'),
                    autoprefixer({
                      browsers: [
                        '>1%',
                        'last 4 versions',
                        'Firefox ESR',
                        'not ie < 9' // React doesn't support IE8 anyway
                      ],
                      flexbox: 'no-2009'
                    }),
                    px2rem({ remUnit: 75 }) //设计稿根据750px(iphone6)
                  ]
                }
              },
              {
                loader: require.resolve('less-loader')
              }
            ]
          },
          extractTextPluginOptions
        )
      )
      // Note: this won't work without `new ExtractTextPlugin()` in `plugins`.
    },

     

    style.less

    .App {
      text-align: center;
      font-size: 16px;
      .goto {
        color: red;
      }
    }

     

    App.vue

    // 页面调用
    import style from './style.less'
    // console.log(style)  输出:{App:{...},goto:{...}}
    <div className={style.App}>
      <Link to="/series" className={style.goto}>
        跳转
      </Link>
    </div>
  • 相关阅读:
    20个热门jQuery的提示和技巧
    10个原生JavaScript技巧
    HTML5开发 BUG解决
    JS笔试题
    AMD:浏览器中的模块规范
    Win8 App使用Listview的简单方法
    Javascript模块化编程
    移动端插件IScroll.js
    移动web资源概论
    Commonjs规范中module.exports和exports的区别
  • 原文地址:https://www.cnblogs.com/icaihua/p/9919301.html
Copyright © 2020-2023  润新知