[英]Exclude subdirectory from rollup-plugin-copy (vite.js)
我试图将pdftron集成到现有的 vite.js 构建中。
正如上面链接中提到的,我将所有必要的资产复制到我的输出文件夹中。 但所有文件加起来超过 300MB。 所以我想排除一些我不需要的功能。 供应商提供了优化库的脚本,但目前无法自动运行优化脚本。
无论如何,我想通过从构建中删除最大的不必要文件夹来模仿优化脚本的行为。 但不知何故,我无法从被复制的对象中排除子目录。 我想我的配置中有一个非常愚蠢的错误。 下面是我的vite.config.js
的摘录。 我尝试了多种不同的排除目录的方法(你可以看到它变成了一个猜谜游戏)。 到目前为止没有任何效果。
如有必要,我将提供一个演示项目。
import copy from "rollup-plugin-copy";
const outputDir = 'build';
/**
* @type {import('vite').UserConfig}
*/
const config = {
build: {
outDir: outputDir,
emptyOutDir: false,
assetsDir: '.',
lib: {
entry: 'index.js',
name: 'my-lib',
fileName: 'my-lib.js',
formats: ['es']
},
rollupOptions: {
output: {
entryFileNames: `my-lib.js`,
chunkFileNames: `[name].js`,
assetFileNames: `[name].[ext]`
},
plugins: [copy({
targets: [
{
src: ['node_modules/@pdftron/webviewer/public/*', '!core/pdf/full/*'],
dest: outputDir + '/pdftron1'
},
{
src: ['node_modules/@pdftron/webviewer/public', '!node_modules/@pdftron/webviewer/public/core/pdf/full/*'],
dest: outputDir + '/pdftron2'
},
{
src: ['node_modules/@pdftron/webviewer/public', '!node_modules/@pdftron/webviewer/public/core/pdf/full'],
dest: outputDir + '/pdftron3'
},
{
src: ['node_modules/@pdftron/webviewer/public', '!node_modules/@pdftron/webviewer/public/core/pdf/full/'],
dest: outputDir + '/pdftron4'
},
{
src: ['node_modules/@pdftron/webviewer/public', '!node_modules/@pdftron/webviewer/public/core/pdf/full/**'],
dest: outputDir + '/pdftron5'
},
]
})
]
},
},
}
export default config
package.json:
{
"name": "pdftron-vite-example",
"version": "1.0.0",
"scripts": {
"build": "vite build"
},
"dependencies": {
"@pdftron/webviewer": "8.7.0"
},
"devDependencies": {
"vite": "^2.9.13",
"rollup-plugin-copy": "^3.3.0"
}
}
经过进一步调查,我找到了解决方案。 这是我的新rollup-plugin-copy
copy({
targets: [
{
src: [
'node_modules/@pdftron/webviewer/public/core/assets'
, 'node_modules/@pdftron/webviewer/public/core/external'
, 'node_modules/@pdftron/webviewer/public/core/pdf'
, '!node_modules/@pdftron/webviewer/public/core/pdf/full'
, 'node_modules/@pdftron/webviewer/public/core/*'
, 'node_modules/@pdftron/webviewer/public/ui/assets'
, 'node_modules/@pdftron/webviewer/public/ui/chunks'
, 'node_modules/@pdftron/webviewer/public/ui/i18n'
, 'node_modules/@pdftron/webviewer/public/ui/*'
],
dest: outputDir,
expandDirectories: true,
onlyFiles: true,
}
],
flatten: false,
hook: 'writeBundle'
})
解决方案就是基于 这个问题。
请注意,我将钩子更改为writeBundle
,因此当emptyOutDir
设置为true
时,vite 不会删除所有内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.