javascript - Το εγκατεστημένο πακέτο NPM λείπει τα TypeScript μεταγλωττισμένα αρχεία JS και τα αρχεία δηλώσεων


Έχω δημοσιεύσει μια βιβλιοθήκη TypeScript στο NPM. Στο GitHub ο φάκελος dist (Σύνδεσμος στο φάκελο του αποθετηρίου) περιέχει όλα τα μεταγλωττισμένα αρχεία JavaScript και d.ts. Ωστόσο, όταν τρέχω npm i <my_package>, το αποτέλεσμα είναι ένα module με έναν φάκελο dist που περιέχει μόνο ένα index.js, ενώ ο φάκελος src εξακολουθεί να υπάρχει με τα αρχεία TypeScript. Ο φάκελος dist/src μαζί με τα αρχεία JavaScript και d.ts δεν εμφανίζεται στο εγκατεστημένο πακέτο, με συνέπεια το module μου να μην αναγνωρίζεται και να μην είναι τυποποιημένο σε έργα Vanilla JavaScript.

Βιβλιοθήκη tsconfig.json:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "declaration": true,
    "outDir": "./dist",
    "strict": true,
  },
  "exclude": [
    "node_modules/",
    "dist/"
  ]
}

Βιβλιοθήκη package.json

{
  "name": "easy-trivia",
  "version": "2.0.3",
  "description": "A wrapper for the Open Trivia Database API. Built with TypeScript, works with VanillaJS.",
  "keywords": [
    "trivia",
    "games",
    "fun",
    "api",
    "easy",
    "typescript",
    "small",
    "quiz",
    "opentriviadatabase",
    "opentdb",
    "opentriviadb"
  ],
  "main": "dist/index.js",
  "types": "dist/index.d.ts",
  "scripts": {
    "build": "tsc",
    "prettier": "npm run build && prettier -w src/",
    "prepublish": "npm run prep",
    "exec": "npm run build && node .",
    "test": "npm run build && npx jest",
    "prep": "npm run build && npm run test && npm run prettier"
  },
  "files": [
    "src",
    "typings"
  ],
  "repository": {
    "type": "git",
    "url": "git+https://github.com/Elitezen/easy-trivia.git"
  },
  "author": "Elitezen",
  "license": "ISC",
  "bugs": {
    "url": "https://github.com/Elitezen/easy-trivia/issues"
  },
  "homepage": "https://github.com/Elitezen/easy-trivia#readme",
  "devDependencies": {
    "@types/jest": "^27.0.3",
    "@types/node": "^16.11.7",
    "jest": "^27.5.1",
    "nodemon": "^2.0.12",
    "prettier": "2.4.1",
    "ts-jest": "^27.1.3"
  },
  "engines": {
    "node": ">=14.0.0",
    "npm": ">=7.0.0"
  }
}

Απάντηση #1

Για να δημοσιεύσετε τους τύπους, θα χρειαστεί να συμπεριλάβετε ρητά τον κατάλογο dist στο πεδίο files του package.json σας. Απλώς η αναφορά του αρχείου στο types δεν θα το περιλαμβάνει πραγματικά. Για το main αυτό είναι διαφορετικό, καθώς θα περιλάβει αυτόματα το υποδεικνυόμενο αρχείο. Σύμφωνα με τα έγγραφα του npm για το package.json:

Ορισμένα αρχεία περιλαμβάνονται πάντα, ανεξάρτητα από τις ρυθμίσεις:

  • package.json
  • ΔΙΑΒΑΣΤΕ ΜΕ
  • Άδεια
  • Το αρχείο στο πεδίο «main»

Για να επαληθεύσετε εύκολα ποια αρχεία περιλαμβάνονται, το npm pack --dry-run είναι χρήσιμο.