开始
起因:我们单位这个项目用的vite+react使用print打印 开发环境没问题、一到打包时就卡住、所以我就想单独打包成组件在引用看看还有问题么、结果还真可以!又是离谱的一天
- 首先需要把npm的分支切换成官网地址、因为只有官网地址才能登陆npm账号
这里说一下我是用nrm切换 直接全局下载nrm之后百度搜怎么用就可以
https://www.npmjs.com
npm官网地址 没有账号的自己去注册
- 之后就要登录npm 在项目中直接
npm login
就行、可能这里会报错、因为切换完npm官网地址需要退出重新进一下编辑器、一定要大退、之后就按要求输入用户名密码就行啦、 - 之后我们说一下vite配置、我把代码放在下面
package.json
{"name": "lymn-print-com","main": "./dist/lymn-print-com.cjs","module": "./dist/lymn-print-com.js","version": "0.0.39","private": false,"files": ["dist"],"scripts": {"dev": "vite","build": "vite build","lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0","preview": "vite preview"},"dependencies": {"react": "^18.2.0","react-dom": "^18.2.0"},"devDependencies": {"@claviska/jquery-minicolors": "^2.3.6","@types/react": "^18.2.66","@types/react-dom": "^18.2.22","@vitejs/plugin-react": "^4.2.1","bwip-js": "^4.0.0","canvg": "^3.0.10","chai": "^4.1.2","eslint": "^8.57.0","eslint-plugin-react": "^7.34.1","eslint-plugin-react-hooks": "^4.6.0","eslint-plugin-react-refresh": "^0.4.6","html2canvas": "^1.4.1","jquery": "^3.6.0","jsbarcode": "^3.11.5","jspdf": "^2.5.1","nzh": "^1.0.8","rollup-plugin-copy": "^3.5.0","socket.io-client": "^4.5.1","vite": "^5.2.0"}
}
这里说一下files这个很重要 因为没有这个到时候会把所有的文件都传到npm上、其次private一定要设置false 如果需要直接访问你包下的文件一定不要exports这个选项、
vite.config.js
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'// https://vitejs.dev/config/
import copy from 'rollup-plugin-copy'
export default defineConfig({plugins: [react()],build: {lib: {entry: 'src/hiprint/hiprint.bundle.js', // 你的库入口文件 name: 'HiprintReact9', // 库的名称,将在 UMD 构建中用作全局变量 formats: ['es', 'cjs', 'umd'], // 输出的格式 },rollupOptions: {plugins: [copy({targets: [{ src: 'src/hiprint/css/*', dest: 'dist/css' },// 将 CSS 复制到 dist 下的目标目录 // { src: 'src/hiprint/css/hiprint.css', dest: 'dist/hiprint.css' } // 将 CSS 复制到 dist 下的目标目录 // 可以添加更多的 copy 目标 ],verbose: true,flatten: false})]}},
})
这里本打算用copy这个组件复制的、但是一直没有用、之后这些css我还需要、想拉半天才发现自己挺der、直接放public下就可以的 废这么大进、那位大佬知道copy为啥不行可以告诉我一下、谢谢
- 最后
npm publish
就可以啦 这就是我研究半天的成果