Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .changeset/deep-peas-grab.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"@naverpay/pite": minor
---

[공통] visualize 정상화 및 css 옵션 추가

PR: [[공통] visualize 정상화 및 css 옵션 추가](https://github.com/NaverPayDev/pite/pull/68)
45 changes: 28 additions & 17 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import defaultBrowserslist from '@naverpay/browserslist-config'
import babel from '@rollup/plugin-babel'
import browserslistToEsbuild from 'browserslist-to-esbuild'
import preserveDirectives from 'rollup-plugin-preserve-directives'
import visualizer from 'rollup-plugin-visualizer'
import {PluginVisualizerOptions, visualizer} from 'rollup-plugin-visualizer'
import {BuildOptions, defineConfig, Plugin} from 'vite'

import {getBrowserslistConfig} from './browserslist'
Expand All @@ -17,11 +17,11 @@ export interface ViteConfigProps {
cwd?: string
entry: string | string[] | Record<string, string>
outputs?: {format: 'es' | 'cjs'; dist: string}[]
cssFileName?: string
visualize?: boolean
visualize?: boolean | PluginVisualizerOptions
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

visualize 관련 옵션 받을 수 있게 수정

allowedPolyfills?: string[]
ignoredPolyfills?: string[]
options?: BuildOptions
css?: false | {filename: string; extract?: boolean; minify?: boolean; modules?: boolean; scss?: boolean}
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • css 관련 번들이 필요 없으면 false
  • 있으면 옵션 객체 주입 필요
    • filename : css extract 될 파일 이름
    • extract : ssr을 지원하는 패키지일 때 필요 / code split을 통해 별도 파일 제공
    • minify : css 파일 압축 시 필요
    • modules : css modules 사용시 필요
    • scss : scss 지원 시 필요

}

export function createViteConfig({
Expand All @@ -31,11 +31,11 @@ export function createViteConfig({
{format: 'es', dist: 'dist/esm'},
{format: 'cjs', dist: 'dist/cjs'},
],
cssFileName = 'style.css',
visualize = false,
allowedPolyfills = [],
ignoredPolyfills = [],
options,
css: cssOptions = false,
}: ViteConfigProps) {
const browserslistConfig = getBrowserslistConfig(cwd)
const externalDeps = getExternalDependencies(cwd)
Expand Down Expand Up @@ -65,9 +65,9 @@ export function createViteConfig({
const build: BuildOptions = {
target: browserslistToEsbuild(browserslist),
lib: {
cssFileName: cssFileName.replace('.css', ''),
formats,
entry: getViteEntry(entry),
...(cssOptions ? {cssFileName: cssOptions.filename.replace('.css', '')} : {}),
...inputLib,
},
rollupOptions: {
Expand All @@ -90,16 +90,6 @@ export function createViteConfig({

return `${chunkInfo.name}${extension}`
},
assetFileNames: (assetInfo) => {
if (!assetInfo.names) {
return ''
}
if (assetInfo.names.length > 0 && assetInfo.names[0] === 'style.css') {
return cssFileName
}

return assetInfo.names[0]
},
}
}),
plugins: [
Expand All @@ -126,16 +116,37 @@ export function createViteConfig({
exclude: /node_modules/,
}),
...inputRollupPlugin,
...(visualize ? [visualizer()] : []),
...(visualize ? [visualizer(typeof visualize === 'object' ? visualize : {})] : []),
preserveDirectives(),
publint({cwd}),
],
...inputRollupOptions,
},
...(cssOptions
? {
cssCodeSplit: cssOptions.extract || false,
cssMinify: cssOptions.minify || false,
}
: {}),
...restOptions,
}

const plugins = [vitePluginTsup({formats, entry, outDir: {esm: esmDir, cjs: cjsDir}})]

return defineConfig({build, plugins})
return defineConfig({
build,
plugins,
...(cssOptions
? {
css: {
modules: cssOptions.modules
? {localsConvention: 'camelCase', generateScopedName: '[name]__[local]___[hash:base64:5]'}
: false,
preprocessorOptions: cssOptions.scss
? {scss: {additionalData: `@use "sass:math"; @use "sass:color";`}}
: undefined,
},
}
: {}),
})
}