使用Rollup 打包vue文件报错 (style 使用的是less)

使用Rollup 打包vue文件报错 (style 使用的是less)

vue文件中 使用 

<style lang="less" src="./index.less"></style>


打包时报错

index.less is not parsed yet


构建时候使用了 rollup-plugin-less 插件无效


rollup.config.js如下:

import vue from 'rollup-plugin-vue';

import css from 'rollup-plugin-css-only';

import less from 'rollup-plugin-less';

import typescript from 'rollup-plugin-typescript2';

import {nodeResolve} from '@rollup/plugin-node-resolve';

import {name} from '../package.json';

import {terser} from 'rollup-plugin-terser';


const file = type => `dist/${name}.${type}.js`;

const overrides = {

  compilerOptions: {declaration: true},

  exclude: ['tests/**/*.ts', 'tests/**/*.tsx', 'src/main.ts']

};

export {name, file};

const baseConfig = {

  input: 'src/index.ts',

  output: {

    name,

    file: file('esm'),

    format: 'esm'

  },

  plugins: [nodeResolve(), typescript({tsconfigOverride: overrides}), vue(), terser(), less(), css({output: 'bundle.css'})],

  external: ['@vue/composition-api', '@types/js-md5', '@types/crypto-js', 'vue', 'lodash-es', 'vue-demi', 'axios', 'crypto-js', 'jsencrypt', 'js-md5']

};


export default baseConfig;


求解决


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
张轩 2021-08-03 10:27:31

同学你好 今天试了一下 解决了 方案如下

首先需要修改一下 .vue 中的 style 的 src,改成内连的样式,因为我发现 rollup-vue-plugin 好像和 webpack 不一样,他不支持直接 src 级别的编译。

<style lang="less">
.essc-text {
    box-sizing: border-box;
    white-space: pre-wrap;
    position: relative !important;
}
</style>

或者你可以运行之前先运行一遍 less 将它编译成 css

<style src="style.css"/>

然后修改一下配置文件

// 注意 less 是不需要的,只要设置 preprocessStyles 属性即可,vue plugin 可以直接处理 less
plugins: [nodeResolve(), typescript({tsconfigOverride: overrides}), 
vue({preprocessStyles: true}), terser(), css({output: 'bundle.css'})],

最后打包成功,请看截图:

http://img1.sycdn.imooc.com//climg/6108a98c095958d316680792.jpg

张轩 2021-07-29 18:12:44

同学你好 我这里正好有个使用 sass 的例子 ,我想 less 应该是一样的

你可以试试看,我使用的是 postcss plugin,css plugin 就不需要了


安装两个依赖
"postcss": "^8.3.5",
"rollup-plugin-postcss": "^4.0.0"

import postcss from 'rollup-plugin-postcss'

使用
vue({ preprocessStyles: true }),
postcss({ extract: path.resolve('dist/index.css') })


  • 提问者 慕粉0935116641 #1

    这个还是不行 

    2021-08-02 10:19:21
  • 张轩 回复 提问者 慕粉0935116641 #2

    方便的话 提供一下你的代码(git) 我在本地帮你调试一下

    2021-08-02 12:11:15
  • 提问者 慕粉0935116641 回复 张轩 #3

    http://www.5151good.com/aaa.zip

    2021-08-02 16:05:02
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师