标签: npm-publish

无法解析项目中已发布的 NPM 模块

我最近发布了一个用 TypeScript 编写的简单 React 模块。我通过将本地包导入到项目中来测试我的模块,并且它运行完美。但是,现在我已经发布了该模块,每当我尝试将其导入项目时,都会收到以下错误:

Failed to compile.

./src/...
Module not found: Can't resolve '<module>' in '.../src/...'
Run Code Online (Sandbox Code Playgroud)

package.json包在和中列出package-lock.json,模块显示在 中node_modules。此外,VS Code 不会出现任何问题,所以我不太确定可能是什么问题。

node-modules typescript reactjs npm-publish

5
推荐指数
1
解决办法
1904
查看次数

npm 发布:详细堆栈错误:400 错误请求

我使用npm publish返回错误 400 Bad Request,\n我尝试了以下步骤的方法:

\n
    \n
  • delete node_modules
  • \n
  • npm cache clean -f
  • \n
  • npm install
  • \n
  • npm audit
  • \n
\n

但它不起作用。如果您有同样的问题或解决方法\xef\xbc\x8c请告诉我\xef\xbc\x8c谢谢\xef\xbc\x81

\n

我的环境是windows10: v18363.1198 node: v14.15.1 npm: v6.14.9

\n
\n
http fetch PUT 400 https://registry.npmjs.org/byte-download 1400ms\nverbose stack Error: 400 Bad Request - PUT https://registry.npmjs.org/byte-download - Bad Request\nverbose stack     at D:\\Program Files\\nodejs\\node_global\\node_modules\\npm\\node_modules\\npm-registry-fetch\\check-response.js:117:15\nverbose stack     at processTicksAndRejections (internal/process/task_queues.js:93:5)\nverbose statusCode 400\n
Run Code Online (Sandbox Code Playgroud)\n
\n

npm http-status-code-400 npm-publish

5
推荐指数
0
解决办法
2472
查看次数

使用 tsdx 导出子模块而不是根中的所有组件

目前的行为

我们正在使用 tsdx 构建共享代码项目,我们只有一个疑问,担心我们无法得到答案。如何导出使用 TSDX 发布的包的子文件夹

让我们用我之前的例子来回答这个问题。在我们项目的入口点,我们将这两个组件导出到根目录中。

因此,当您想使用它们时,我们必须从库的根目录导入组件(使用示例):

import { Thing, SimpleStyledH1Application } from "tsdx-styled-components"
Run Code Online (Sandbox Code Playgroud)

我们想知道如何配置我们的入口点,以便我们可以从子文件夹中导入我们的组件,例如

import { Thing } from "tsdx-styled-components/things"
import { SimpleStyledH1Application } from "tsdx-styled-components/styled"
import { CoreComponent } from "tsdx-styled-components"
Run Code Online (Sandbox Code Playgroud)

预期行为/建议解决方案

关于如何将子文件夹添加到我们创建的库中的指南/注释,这样(不仅对我来说而且对使用 TSDX 的任何人来说)如何创建带有子文件夹的库都很容易。

额外的背景信息

  • 我尝试按照此线程更改我们的汇总配置,但没有工作,并且不确定是否是完成它的正确/更简单的路径。
  • 有一个用于此目的的汇总插件,因此类似的东西以及如何添加到我们的说明中tsdx.config.js会很棒。

您的环境

示例项目:

https://github.com/robertovg/tsdx-styled-components/ https://github.com/robertovg/next-ts-styled-components-tsdx-host

这个问题最初作为tsdx上的问题发布,但几个月后没有答案,我想将其移至此处,看看是否有人解决了该问题。

javascript module typescript npm-publish tsdx

5
推荐指数
0
解决办法
483
查看次数

如何创建 JavaScript 库

我在 JavaScript 中创建了一些函数。

我发现我在许多项目中重复使用它们。

所以我决定为我的编码创建一个小的 JavaScript 库。像 react、react-dom、jquery 这样的库,我可以用 npm 安装它: npm install <my-personal-library>

我在网上搜了一下。我了解到我可以使用npm publish <my-personal-library,但我不知道如何格式化我的库和函数,以便像 npm 包一样使用和安装它们。

我也不知道为我的函数和库创建类型定义。像@types/react 任何指导?

javascript package npm node-modules npm-publish

5
推荐指数
1
解决办法
65
查看次数

发布带有路径和 tsconfig-paths 的打字稿库

我想将共享的通用代码放入私有的 npm 注册表中。

使用下面的命令和 tsconfig 一直工作得很好,直到我想通过发布到 npm 注册表使一个项目依赖于另一个项目。

我有几个文件夹和很多文件,所以我使用路径和 tsconfig-paths (导入看起来很干净,例如import { Repo } from "adapters/api/repository";)。

常见项目可以自行正确构建,但是一旦发布并用作依赖项,当我构建使用它的项目时,它就会出现构建错误。

共同项目;构建良好:与rm -rf dist && tsc --sourceMap -p ./ && cp tsconfig.json dist/ && cp .env dist/.

包的文件结构为:

dist
  src
    adapters
      api
        repository.d.ts
        repository.js
     ...
    application
      interfaces
        interfaceA.d.ts
        interfaceA.js
      ...
    ...
    index.d.ts
    index.js
  tsconfig.json
Run Code Online (Sandbox Code Playgroud)

哪里src/adapters/api/repository.ts

import { InterfaceA } from "application/interfaces/interfaceA";
export interface ApiRepository {
    property: InterfaceA;
    ...
}
Run Code Online (Sandbox Code Playgroud)

tsconfig.json:

{
  "compilerOptions": {
    "baseUrl": ".",
    "lib": [
      "es2016" …
Run Code Online (Sandbox Code Playgroud)

typescript tsconfig npm-publish tsconfig-paths

5
推荐指数
0
解决办法
367
查看次数

将以前的主要版本发布到 npm,不带标签并避免使用最新版本

有没有最好的方法来发布 npm 包的先前主要版本而不为其添加标签?我们当前的主要版本是 3.x (v3),因此我们npm publish会自动为该版本赋予标签latest。当我们发布2.x版本 (v2) 的更新时,我们必须给它一个标签,这样它就不会自动latest从 v3 中获取标签。

我们可以做类似的事情previous,尽管它的含义是主观的。事实上,我们根本不需要v2 的标签。如果人们想安装 v2,Semver 效果很好。有没有比使用标签发布并添加postpublish删除标签的脚本更好的解决方案来不添加不必要的标签?(我写的时候听起来很可笑)

npm npm-publish

5
推荐指数
1
解决办法
2311
查看次数

如何将js+assets文件发布到npm

我开发了一个供公司内部使用的小型 Ui 组件,并将其发布到 npm,但是当我安装该包时,我只在文件夹index.js中获得一个文件node_modules

我没有使用任何包生成器,es-modules,只是一个简单.js.css

我想要作为包发布的文件夹具有以下结构:

package
 - src
   - index.js
   - index.css
   - assets/
     - fonts/
       - ..some fonts
     - images/
       - icon.svg
 - package.json
Run Code Online (Sandbox Code Playgroud)

javascript npm npm-publish npm-package

5
推荐指数
1
解决办法
2596
查看次数

NPM 发布/包不包含 Windows 上符号链接目录的内容

NPM 不遵循目录符号链接,也不遵循目录连接。是否有某种配置或方法可以强制 NPM 也包含此类目录中的文件?

\n

最小的可重现示例。文件夹结构:

\n
hello/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 foo/\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 foo.js\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 bar/\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package.json\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bar.js\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 foo/ (SYMLINK)\n\n
Run Code Online (Sandbox Code Playgroud)\n

有两种类型的符号链接不起作用:

\n
hello/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 foo/\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 foo.js\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 bar/\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package.json\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bar.js\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 foo/ (SYMLINK)\n\n
Run Code Online (Sandbox Code Playgroud)\n
bar> mklink /J foo ..\\foo\n
Run Code Online (Sandbox Code Playgroud)\n

打包命令

\n
bar> mklink /D foo ..\\foo\n
Run Code Online (Sandbox Code Playgroud)\n

foo/foo.js生成没有文件夹的tar 包foo/

\n
bar> npm pack\n
Run Code Online (Sandbox Code Playgroud)\n

npm npm-publish

5
推荐指数
0
解决办法
278
查看次数

NPM 尝试发布两次

我正在维护我的第一个npm包,所以这可能是我的一个错误。构建我的包并将其提交到git后,下一步是:

\n
$ npm version patch\n$ npm publish\n
Run Code Online (Sandbox Code Playgroud)\n

输出(节略)如下:

\n
\nnpm notice \nnpm notice   @mememe/p3-model@0.7.2\nnpm notice === Tarball Contents === \nnpm notice 188B  README.md                \nnpm notice 4.5kB dist/doc.d.ts\n\n  (etc) \n            \nnpm notice 792B  package.json             \nnpm notice === Tarball Details === \nnpm notice name:          @mememe/p3-model                       \nnpm notice version:       0.7.2                                   \nnpm notice filename:      @mememe/p3-model-0.7.2.tgz             \nnpm notice package size:  6.2 kB                                  \nnpm notice unpacked size: 23.2 kB                                 \nnpm notice shasum:        cb5588ee626efc21532845c608fdb05a5fcd4db3\nnpm notice integrity:     sha512-s7IK2HSXCNTUk[...]ZHxDgAOIr4Cnw==\nnpm notice total files:   11 …
Run Code Online (Sandbox Code Playgroud)

npm npm-publish

5
推荐指数
1
解决办法
1242
查看次数

没有入口点的 npm 打包

我计划将 JavaScript 库发布为 npm 包,并且我有一个关于包入口点和最佳实践的问题:当包不公开单个入口点时,最佳实践是什么?

  1. 明确声明exports没有main
  2. 声明exportsmain会指向一个index.js会抛出一些有用的错误消息,解释如何使用该库

我的 lib 仅与节点 > 14 兼容,我们使用该exports属性来利用子路径导出(因为它以 ESM/CJS 模块格式提供)

正如声明的那样,该库不公开单个入口点,而是通过从特定文件导入默认导出来使用。因此消费者将使用以下语义来导入:

// ESM
import Foo from 'my-lib/path/filename1';
Run Code Online (Sandbox Code Playgroud)
// ESM
import Foo from 'my-lib/path/filename1';
Run Code Online (Sandbox Code Playgroud)

entry-point node.js npm npm-publish

5
推荐指数
0
解决办法
620
查看次数