美文网首页
webpacker踩坑记

webpacker踩坑记

作者: 鱼翅大魔王 | 来源:发表于2020-01-04 15:18 被阅读0次

写在前面

阅读前请注意,本文提到的是rails/webpacker而非前端的webpack

1. alias配置

项目里经常会用到alias,需要进行配置:

# config/webpack/environment.js

const { resolve } = require('path')

environment.config.resolve.alias = {
    '@': resolve('app/javascript/packs')
}

2. less,scss与css

webpacker默认是支持这些预处理的,在vue组件里完全可以直接用如下语法引入文件:

@import './global.less'
@import './global.scss'
@import './global.sass'
@import './global.css'

其次需要注意的是,postcss-import无法解析alias语法:

@import '~@/global.less'

目前的解决方案是手动替换掉~@

# postcss.config.js

require('postcss-import')({
  resolve(fileName){
    if(fileName.charAt(0) == '~'){
      return path.join(__dirname, `app/javascript/packs/${fileName.substr(3)}`)
    }
  }
})

如果你期望在vue模板语法中使用less,你可能还需要安装并配置:

yarn add install less less-loader
# config/webpack/environment.js

const LessLoader = {
    test: /\.less$/,
    use: [{
        loader: "style-loader"
    }, {
        loader: "css-loader"
    }, {
        loader: "less-loader",
        options: {
            javascriptEnabled: true
        }
    }]
}

environment.loaders.append('less', LessLoader);

3. 处理jsx语法

vue中可以使用jsx语法,但一般情况下,可能会遇到一些问题,比如语法错误,参考文档可以使用如下解决方案:

yarn add @vue/babel-plugin-transform-vue-jsx
# babel.config.js

plugins: [
  ...
  '@vue/babel-plugin-transform-vue-jsx',
  ...
]

你也许需要引入外部jsx就像这样:

# hello.jsx

module.export = ()=>{
  return
    <p>hello</p>
}

# app.vue

import jsx from '@/demo.jsx';
export default {
  render(h) {
    return <p>hello</p>;
  }
};

一样可以正常处理。

相关文章

  • webpacker踩坑记

    写在前面 阅读前请注意,本文提到的是rails/webpacker而非前端的webpack 1. alias配置 ...

  • Android Material Design 踩坑记(2)

    Android Material Design 踩坑记(1) CoordinatorLayout Behav...

  • Deepin使用踩坑记

    1. 前言 很喜欢Deepin,奈何坑太多,不过不怕,踩过去~ 2. 踩坑记 2.1 Deepin重启后文件管理器...

  • SpringStreaming+Kafka

    摘自 :Spark踩坑记——Spark Streaming+Kafka [TOC] SpringStreaming...

  • 原生App植入React Native 踩坑记

    原生App植入React Native 踩坑记 为什么我踩坑了有一个需求要去可以在当前工程的feature/RN ...

  • [ANR Warning]onMeasure time too

    ConstraintLayout 踩坑记一次封装组合控件时的坑,我才用了集成 ConstraintLayout 来...

  • IdentityServer 部署踩坑记

    IdentityServer 部署踩坑记 Intro 周末终于部署了 IdentityServer 以及 Iden...

  • 踩坑记

    1、android自签名证书Glide加载不出图片 关于https中自签名证书的介绍以及OkHttp中解决自签名证...

  • 踩坑记

    6月初,看到广西龙脊梯田有个疏秧节,很是心动!我十几年前就去过龙脊,当时觉得整片的梯田又美又壮观,壮族风情浓厚,就...

  • 踩坑记

    该篇文章记录踩过的坑 uglifyjs-webpack-plugin压缩代码报punc (()错误网上查资料,说是...

网友评论

      本文标题:webpacker踩坑记

      本文链接:https://www.haomeiwen.com/subject/blnmwctx.html