ฉันสร้างแพ็คเกจ npm และต้องการติดตั้งในโปรเจ็กต์อื่น
ดังนั้นฉันจึงไปที่โฟลเดอร์รูทของโปรเจ็กต์ของฉันแล้วทำ npm install /path/to/package/folder
มันติดตั้งอย่างถูกต้อง (สร้าง symlink ตามเอกสารประกอบ) และฉันสามารถใช้งานได้โดยนำเข้าจากมันเป็น node_module แบบคลาสสิก
ปัญหาของฉันคือการนำเข้าแบบสัมพัทธ์ภายในแพ็คเกจที่ฉันสร้างขึ้น แพ็กเกจมีการขึ้นต่อกันกับไลบรารีอื่นและโฟลเดอร์ node_modules แบบสัมพันธ์
มันเกิดขึ้นที่ไฟล์ภายในแพ็คเกจของฉันนำเข้าจากโฟลเดอร์ node_modules แบบสัมพันธ์แทนที่จะเป็นโปรเจ็กต์รูท node_modules หากฉันมีการติดตั้งการพึ่งพาในโฟลเดอร์โปรเจ็กต์รูทของฉัน ฉันพบว่ามันอยู่ภายใน node_modules ที่ซ้อนกันของแพ็คเกจของฉันด้วย การทำซ้ำและการนำเข้าแบบสัมพันธ์จากแพ็คเกจของฉันจะนำเข้าจากแพ็คเกจที่ซ้อนกัน สิ่งนี้ทำให้ฉันมีปัญหาบางอย่าง ฉันจะกำหนดค่านี้อย่างถูกต้องได้อย่างไร
นี่คือภาพร่างที่พยายามชี้แจง:
my_project
|
|
__ node_modules (root)
|
|
my_package (in this case symlink to my package)
| |
| |
| |__node_modules (nested) <-------
| | |
| | |
| | |__ third_package
| |
| |
| |__ dist
| |
| |
| __ lib
| |
| |
| |__ index.js
|
|
|___ third_package
index.js
นำเข้าไฟล์ thied_package จาก node_modules ที่ซ้อนกันแทนที่จะเป็น root ไฟล์แพ็คเกจของฉันถูกคอมไพล์ด้วย babel ลงใน dist/lib
ขอบคุณ
นี่คือแพ็คเกจ json ของ my_package
{
"name": "my_package",
"version": "1.0.0",
"description": "",
"main": "lib/index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "./node_modules/.bin/babel src --out-dir lib --copy-files",
},
"keywords": [
],
"author": "",
"license": "ISC",
"dependencies": {
"@babel/cli": "^7.10.5",
"@babel/core": "^7.11.4",
"@babel/preset-env": "^7.11.0",
"@babel/preset-react": "^7.10.4",
"@fortawesome/fontawesome-free": "^5.14.0",
"@fortawesome/fontawesome-svg-core": "^1.2.30",
"@fortawesome/free-brands-svg-icons": "^5.14.0",
"@fortawesome/free-regular-svg-icons": "^5.14.0",
"@fortawesome/free-solid-svg-icons": "^5.14.0",
"@fortawesome/react-fontawesome": "^0.1.11",
"leaflet": "^1.6.0",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-leaflet": "^2.7.0"
},
"peerDependencies": {
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-leaflet": "^2.7.0",
"leaflet": "^1.6.0"
},
"devDependencies": {
"babel-eslint": "^10.1.0",
}
}