找不到模块 - typescript cli

module not found - typescript cli

这是我的项目:https://github.com/CrunchyArtie/pile-de-la-honte-cli

在本地(npm run devnpm i -g .)使用它时它可以工作,但是当我使用 npm pack 构建的存档或在发布后安装它时,它不工作。

错误:

internal/modules/cjs/loader.js:796
    throw err;
    ^

Error: Cannot find module './models/questions/home.question'
Require stack:
- C:\Users\lundi\AppData\Roaming\npm\node_modules\pile-de-la-honte\dist\index.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:793:17)
    at Function.Module._load (internal/modules/cjs/loader.js:686:27)
    at Module.require (internal/modules/cjs/loader.js:848:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Object.<anonymous> (C:\Users\lundi\AppData\Roaming\npm\node_modules\pile-de-la-honte\dist\index.js:10:25)
    at Module._compile (internal/modules/cjs/loader.js:955:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10)
    at Module.load (internal/modules/cjs/loader.js:811:32)
    at Function.Module._load (internal/modules/cjs/loader.js:723:14)
    at Function.Module.runMain (internal/modules/cjs/loader.js:1043:10) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    'C:\Users\lundi\AppData\Roaming\npm\node_modules\pile-de-la-honte\dist\index.js'
  ]
}

而dist文件夹只是容器index.js

我尝试添加到 package.json :

main: "dist/index.js",
bin: "dist/index.js"

和这个 tsconfig :

"extends": "@tsconfig/recommended/tsconfig.json",
"include": [
    "src/**/*"
],
"exclude": [
    "node_modules",
    "**/*.spec.ts"
],
"compilerOptions": {
    "outDir": "dist",
    "lib": [
        "es6",
        "es2015",
        "dom",
        "es2019",
        "es2017",
        "es7"
    ],
    "target": "es5",
    "module": "commonjs",
    "declaration": true,
    "rootDir": "src",
    "strict": true,
    "types": ["node"],
    "esModuleInterop": true,
    "resolveJsonModule": true,
    "baseUrl": ".",
    "paths": {
        "./*": [
            "dist/*"
        ]
    }
}

问题:.gitignore 中有 dist 文件夹。

解决方法:

  1. 复制 .gitignore,
  2. 将这个新文件重命名为 .npmignore
  3. 打开 .npmignore 并删除关于 dist 文件夹的行。

为什么 : Npm 将打包整个项目 expect :

  • 没有 .gitignore.npmignore,
  • 如果此文件存在.npmignore中列出的内容。
  • 如果.gitignore文件存在但.npmignore文件不存在,.gitignore中列出的内容。