在项目中使用自己发布的包时遇到的一些问题记录

一、前言

有时在项目中(尤其是内网)会使用自己开发的sdk或者是使用一些自己修改过源码的包,对于这些包的引入很多时候是直接放在public文件夹下即可,但是某些情况下很不方便,比如three.js,在使用examples下的文件常常会用到后处理,各种loader等,但是他们的源码都是import * as THREE from 'three'或者 import {Mesh} from 'three',这种形式,如果放在public下,那么就需要将每个导入都修改为相对路径,引入的少,引入的多就比较麻烦了,基于此背景,本文记录相关的一些经验。

二、引入本地包

2.1 基本引入方式

c++ 复制代码
npm install 待安装包的相对路径

这种方式可以引入,但是存在一个问题,那就是如three.js下的postProcessing文件夹在修改源码后不会自动更新,需要重新安装three,但是在内网环境下很容易出问题,不知什么原因,安装一次要很久,还很容易出错。不推荐!

2.2 优雅的引入方式

我的文件夹结构如下:

2.2.1 先初始化一个包

shell 复制代码
cd node_local_modules/EarthThree
shell 复制代码
npm init

此时会生成package.json,我的结果如下:

json 复制代码
{
  "name": "three",
  "version": "1.0.0",
  "main": "EarthThree.es6.js",
  "directories": {
    "example": "examples"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "description": ""
}

2.2.2 主目录配置

回主目录下修改package.json,增加workspaces配置

json 复制代码
{
  "devDependencies": {
    "vite": "^6.0.3"
  },
  "workspaces": [
    "node_local_modules/*"
  ]
}

2.2.2.3 安装three

shell 复制代码
npm install three

此时node_modules中生成了three文件夹并链接到node_local_modules

2.2.2.4 代码中使用

未报错,没有任何问题!

三、 文件夹拷贝后导致的问题

在进行文件夹拷贝后,执行项目会报错,找不到three

3.1 解决方式一

node_modules压缩后拷贝到新的文件夹再解压,解决问题,原理不明,一次次血泪实践换来的解决方案。

3.2 重新建立链接

认真排查后发现,报错时node_modulesthree文件夹是空的

原来是链接断了,解决方式是建立新链接

启动无报错!

四、总结

使用推荐的方案有一个很大的好处就是修改了earthThree文件夹下的文件,增加,替换,修改代码都能立马识别,不需要什么npm update three之类的更新的操作,但是基本引入方式每次都要执行,还总是出错!

相关推荐
Shirley~~5 分钟前
Vue-skills的中文文档
前端·人工智能
毎天要喝八杯水13 分钟前
搭建vue前端后端环境
前端·javascript·vue.js
计算机程序设计小李同学42 分钟前
幼儿园信息管理系统的设计与实现
前端·bootstrap·html·毕业设计
雨季6661 小时前
Flutter 三端应用实战:OpenHarmony “专注时光盒”——在碎片洪流中守护心流的数字容器
开发语言·前端·安全·flutter·交互
tao3556671 小时前
【用AI学前端】HTML-02-HTML 常用标签(基础)
前端·html
2601_949532842 小时前
Psello HTML Template: A Developer‘s Deep-Dive Review and Guide - Download Free
前端·windows·html·seo·wordpress·gpl
CappuccinoRose2 小时前
CSS前端布局总指南
前端·css·学习·布局·flex布局·grid布局·float布局
穿过锁扣的风2 小时前
如何操作HTML网页
前端·javascript·html
San30.2 小时前
从零构建坚固的前端堡垒:TypeScript 与 React 实战深度指南
前端·react.js·typescript
yunhuibin2 小时前
VideoPipe环境搭建及编译ubuntu240403
前端·人工智能