นี่คือคำตอบล่าสุดโดยใช้ TypeScript 1.8.10:
โครงสร้างโครงการของฉันคือ:
|
|--- src
|--- test
|--- dist <= My gulp file compiles and places the js, sourcemaps and .d.ts files here
| |--- src
| |--- test
|--- typings
.gitignore
.npmignore
gulpfile.js
package.json
README.md
tsconfig.json
tslint.json
typings.json
ฉันได้เพิ่มสิ่งต่อไปนี้.npmignore
เพื่อหลีกเลี่ยงการรวมไฟล์ที่ไม่เกี่ยวข้องและรักษาขั้นต่ำสุดไว้เพื่อให้แพคเกจนำเข้าและใช้งานได้:
node_modules/
*.log
*.tgz
src/
test/
gulpfile.js
tsconfig.json
tslint.json
typings.json
typings
dist/test
ของฉัน.gitignore
มี:
typings
# ignore .js.map files
*.js.map
*.js
dist
ของฉันpackage.json
มี:
"main": "dist/src/index.js",
"typings": "dist/src/index.d.ts",
ตอนนี้ฉันวิ่ง:
npm pack
ไฟล์ผลลัพธ์ (เมื่อคลายซิป) มีโครงสร้างดังนี้:
|
|--- dist
| |--- src
| |
| index.js
| index.js.map
| index.d.ts
|
package.json
README.md
ตอนนี้ฉันไปที่โครงการที่ฉันต้องการใช้สิ่งนี้เป็นห้องสมุดและพิมพ์:
npm install ./project-1.0.0.tgz
ติดตั้งสำเร็จ
ตอนนี้ฉันสร้างไฟล์index.ts
ในโปรเจ็กต์ของฉันที่ฉันเพิ่งติดตั้ง npm
import Project = require("project");
การพิมพ์Project.
ทำให้ฉันมีตัวเลือก Intellisense ซึ่งเป็นจุดสำคัญของแบบฝึกหัดทั้งหมดนี้
หวังว่านี่จะช่วยคนอื่นในการใช้โปรเจ็กต์ TypeScript npm เป็นไลบรารีภายในในโปรเจ็กต์ใหญ่ ๆ ของพวกเขา
PS:ฉันเชื่อว่าวิธีการรวบรวมโปรเจ็กต์เป็นโมดูล npm ซึ่งสามารถใช้ในโปรเจ็กต์อื่น ๆ นั้นชวนให้นึกถึง.dll
ใน.NET
โลกนี้ ฉันสามารถจินตนาการได้ดีว่าโครงการที่จัดในโซลูชันใน VS Code ซึ่งแต่ละโครงการจะสร้างแพ็คเกจ npm ซึ่งสามารถใช้ในโปรเจ็กต์อื่นในโซลูชันเป็นการพึ่งพาได้
เนื่องจากฉันใช้เวลาพอสมควรในการคิดออกฉันจึงโพสต์ไว้เผื่อว่ามีคนติดอยู่ที่นี่
ฉันโพสต์ไว้เพื่อปิดข้อบกพร่องที่:
https://github.com/npm/npm/issues/11546
ตัวอย่างนี้อัปโหลดไปยัง Github: vchatterji / tsc-seed