Vite로 polyfill을 추가하는 방법
6981 단어 ReactTypeScriptVitepolyfilltech
파클에서도 폴리필이 자동으로 추가되기 때문에 신경 쓰지 않았지만, 바이트는 스스로 추가해야 할 것 같았다.
나의 경우 브라우저에서
csv-parse
라는 프로그램 라이브러리를 사용했고 내부에서 stream
와process
등을 참조했다.우선, esbuild의polyfill을 추가하는 플러그인이 필요합니다.
@esbuild-plugins/node-globals-polyfill
, @esbuild-plugins/node-modules-polyfill
yarn add --dev @esbuild-plugins/node-globals-polyfill @esbuild-plugins/node-modules-polyfill
Vite의config와 연결하면 Polyfill이 됩니다.vite.config.ts
/* eslint-disable import/no-extraneous-dependencies */
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import { NodeGlobalsPolyfillPlugin } from '@esbuild-plugins/node-globals-polyfill'
import * as path from 'path'
// https://vitejs.dev/config/
export default defineConfig({
plugins: [react()],
resolve: {
alias: {
'src/': path.join(__dirname, 'src/'),
stream: 'rollup-plugin-node-polyfills/polyfills/stream',
_stream_duplex: 'rollup-plugin-node-polyfills/polyfills/readable-stream/duplex',
_stream_passthrough: 'rollup-plugin-node-polyfills/polyfills/readable-stream/passthrough',
_stream_readable: 'rollup-plugin-node-polyfills/polyfills/readable-stream/readable',
_stream_writable: 'rollup-plugin-node-polyfills/polyfills/readable-stream/writable',
_stream_transform: 'rollup-plugin-node-polyfills/polyfills/readable-stream/transform'
}
},
optimizeDeps: {
esbuildOptions: {
define: {
global: 'globalThis'
},
// Enable esbuild polyfill plugins
// https://medium.com/@ftaioli/using-node-js-builtin-modules-with-vite-6194737c2cd2
plugins: [
NodeGlobalsPolyfillPlugin({
process: true,
buffer: true
})
]
}
},
build: {
target: 'esnext'
}
})
이 글은 매우 참고 가치가 있다.다른 polyfill을 추가하려면 다음과 같은 내용을 참고할 수 있습니다.하지만 내 경우는 이것뿐만이 아니라 추가
Buffer
가 필요하다.Buffer의 polyfill, vite를 추가할 수 있습니다.config.ts가 아니라 코드에 직접 추가해야 합니다.
최상위 레벨 파일로 가져와서 해결합니다.
polyfill.ts
import { Buffer } from 'buffer'
// for csv-parse polyfill
// https://github.com/vitejs/vite/discussions/2785
globalThis.Buffer = Buffer
Reference
이 문제에 관하여(Vite로 polyfill을 추가하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/kra8/articles/c9ed05abb90d60텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)