nearley.js 兼容vite工程化

304 阅读1分钟

一、nearley.js vite工程化默认不支持

image.png

image.png 当我们在Vite+React18工程中使用nearley和引入*.ne文件时候,会发现这样的报错:

image.png

二、网上找答案

image.png

image.png

大致代码如下vite.config.ts

import { defineConfig } from 'vite';
import nearleyPlugin from 'rollup-plugin-nearley';

export default defineConfig(async ({ mode }) => {
  return {
    plugins:[nearleyPlugin(), ...otherPlugins],
});

-注意安装rollup-plugin-nearley插件时,可能需要整体重装依赖,否则会因为找不到nearleyjs模块化导致程序运行失败

三、打包

  • 打包时发现vite内置插件与该插件冲突
npm run build

image.png

image.png

  • 查看报错断点位置发现,vite插件在执行buildImportAnalysisPlugintransform 函数前,没有将source参数编译成esmodule模块

image.png

  • 查看文档发现build时,需要单独在rollup插件中单独执行此插件

  • 最终vite.config.ts配置大致代码如下,注意区分开发环境和生产环境的配置

import { defineConfig } from 'vite';
import nearleyPlugin from 'rollup-plugin-nearley';

export default defineConfig(async ({ mode }) => {
  return {
    plugins:[mode === 'development' ? nearleyPlugin() : {}, ...otherPlugins],
    rollupOptions: {
      build: {
        plugins: [nearleyPlugin()]
    }
});
  • 最后打包成功,测试环境代码运行成功。