问题标签 [npm-pack]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
npm - 复制“npm pack”行为
我试图复制的行为,npm pack
因为它有一个限制,它不写入标准输出,它只能写入本地文件(见这个问题:https ://github.com/npm/npm/issues/12039 )
现在,我可以将当前目录 tar 并写入标准输出,如下所示:
但是,当您提取npm pack
tarball 时,您的包的所有内容都应该在一个名为'package'
.
所以我的问题是 - 我怎样才能压缩当前目录,但将当前目录放在一个'package'
在存档之前调用的目录中?
是否有一些 tar -flag 可以让你这样做?
angular - 共享 UI 组件
我正在为我的团队创建一个可共享的 UI 组件的项目。该项目是使用Angular CLI
并且正在使用 USWDS 框架构建的。
到目前为止,我已经成功地在npm package
私有 npm 存储库上创建了一个自定义,并通过我们的package.json
. 这npm package
被认为是一个核心包(所有项目团队都需要),其中包括USWDS (peer dependencies
以及 USWDS 的相关依赖项,如基于标准 USWDS 标头)。bourbon
bourbon-neat
scss
core
我遇到的问题与我的header.component.html
. 我当前使用的路径是./assets/uswds/img/close.svg
,当标头是主项目的一部分时,它可以工作。这些图像位于node_modules
USWDS 包的目录中,这将使它成为我的自定义包的兄弟。此外,图像目录已添加到 中,angular-cli.json
因此当我们运行时图像可用ng serve
。
我将如何更新文件路径以使其正确显示?
npm - lerna publish 和 npm pack 无法打包“dist”文件夹中的所有文件
我正在尝试使用 lerna 构建我的第一个 Angular 组件包,它运行良好,直到我意识到我必须添加“ng-packagr”才能将所有 HTML 与其余代码捆绑在一起。在添加了支持并让它现在突然工作之后,我的文件没有发布到 tarball 中。
这是我的 package.json
我的 dist 文件夹包含各种文件夹,如下所示:
但是当我运行 alerna publish
或npm pack
时会发生这种情况:
如您所见,只有 1 个文件被添加到 tarball...
有谁知道为什么会突然发生这种情况?我试过玩弄我的 .gitignore ,想可能是它迫使包装忽略这些其他文件,但事实并非如此。
更新
好的,所以我发现罪魁祸首是ng-packagr
。当我运行我的npm run build
which usedng-packagr -p package.json
来构建不同的模块包时,该 CLI 也会生成一个 package.json 进入我的dist
文件夹。当npm pack
或lerna publish
尝试使用 a 打包所有内容时,package.json
他们必须查看生成的 on indist
而不是其上方文件夹中的那个。
我不确定我应该如何解决这个问题。
node.js - Npm pack 包含本地模块
我有一些本地模块,我想将它们包含在我的包中以发送到服务器。由于这些本地包不在 npm 注册表中,因此它们需要成为package 的一部分。
我尝试了一些方法来使用npm pack将 node_modules 文件夹包含在包中,但是这似乎根本不可能?
其次,我尝试在 package.json 文件中的bundledDepencies中列出本地模块并使用npm pack,但是无论如何这也不包括本地模块;
如何将这些本地模块包含在开发包中?
本地模块本身确实包含依赖项,不确定这是否会使事情变得更复杂?
npm - npm pack/publish 不会打包 .gitignore 或 .npmrc 文件
我为我的公司构建了一个项目生成器。它是一个全局安装的 npm 包,运行时会获取/template
包内目录的全部内容并将其复制到用户选择的目的地。
在里面/template
我有 2 个文件npm pack
拒绝包含在最终发布的模块中:
/template/.gitignore
/template/.npmrc
其他所有内容,包括其他隐藏文件,都按预期打包。
这两个文件不在任何根(或嵌套) .gitignore 文件中,而且我没有files
在 npm 可能获取的任何 package.json 中手动指定任何数组。
typescript - 带有扩展另一个类的类的打字稿定义文件(自动生成)
对于扩展另一个类的文件,我遇到了自动生成的 d.ts 文件的问题。我们有一个这样的类结构:(TS 版本 3.2.4)
然后我们有一个扩展它的类:
然后我们使用这个配置文件运行带有声明标志的 tsc:
d.ts 文件似乎生成得很好:
然后我们将其打包为一个 npm 包并将其安装在一个单独的项目中。
当我们在消费项目中使用 MyClass 时,我们无法访问 MyClass 的任何基本成员,例如
我显然在这里遗漏了一些东西。我在这里做错了什么?任何帮助,将不胜感激。
谢谢
编辑:这似乎与 npm 包中的绝对路径和相对路径有关。我们在库中有绝对路径,并且 d.ts 文件也使用绝对路径生成。似乎在其他应用程序中使用这些类时,似乎无法通过它们的路径找到导入的类。我将 node_modules d.ts 文件破解为消费项目中的相对导入路径,它工作正常。我也可以将 npm 包中的路径更改为相对路径,但我想避免这种情况。
node.js - 如何 NPM 发布,以便消费者可以从不同的顶级目录导入
我正在向 NPM 发布一个库。该库是用 Typescript 编写的,Typescript 编译的结果放在一个lib/
文件夹中。主文件是一个index.ts
导出我的公共 API 的文件:
在 package.json 中,我指定:
一旦我的包发布并安装在其他地方,它的文件夹结构是:
消费者从包根目录导入所有内容:
这行得通,但我喜欢隔离路径的想法。一种方法用于功能,另一种用于模型。目前,如果我删除顶级索引,导入将被隔离,但它们现在包含lib/
我不想要的路径中的文件夹:
我实际上想要完成的是相同的,但没有lib/
. 我有一个可行的解决方案,但似乎太复杂了。这是有效的:
- 在 package.json 中,移除
main
types
andfiles
键。 - 删除或清空
index.ts
- 要发布简单的替换
npm publish
为以下步骤:- 复制 package.json 并将其粘贴到
/lib
文件夹中 - cd 进入
/lib
文件夹并运行npm pack
并记下创建的 tarball 的名称 - 跑
npm publish {{TARBALL_NAME}}
- cd 备份到项目根目录
- 复制 package.json 并将其粘贴到
因此,已发布的包在安装后具有以下文件夹结构:
因为事情不再嵌套在lib/
消费者可以按照我的意愿导入的目录中:
问题是打包和发布来完成这件事似乎太麻烦了。当我的队友一直在跑步时,我永远不会让他们进入一个 3 或 4 步的过程npm publish
。
有没有更简单的方法来完成我所追求的?
npm - npm pack 不包含包中的所有文件
我在文件夹npm pack
内运行dist
,但它不包括所有文件。它只包含:package.json、ReADME.md、index.js(主)。
没有.gitignore
文件,我尝试创建一个空.npmignore
文件,但没有帮助。
我还尝试将files
数组添加到package.json
.
根或子文件夹(js 或其他文件)中的所有文件不包含在包文件中。
reactjs - 自定义 NPM 包:错误:元素类型无效:需要字符串(对于内置组件)或类/函数(对于复合组件),但是
我正在尝试将我的 React 组件发布到 npm 并在尝试将我的打包组件导入另一个项目时遇到以下错误:
错误:元素类型无效:应为字符串(对于内置组件)或类/函数(对于复合组件),但得到:未定义。您可能忘记从定义组件的文件中导出组件,或者您可能混淆了默认导入和命名导入。
该错误消息没有帮助,因为这与默认导入与命名导入无关...
我搜索了类似的问题/答案,虽然人们遇到了类似的错误,但情况/情况并不相同。此外,我阅读的帖子中建议的答案也不起作用。下面是关于我一直试图发布到 npm 的 React 组件的信息。这是我的webpack.config.js
:
这是我的切入点,Feedback.js
在我npm run build
成功运行然后尝试使用npm pack
或npm link
(我都尝试过)在本地测试它之后,当我尝试将我的Feedback
组件导入另一个项目时,我收到以下错误:
错误:元素类型无效:应为字符串(对于内置组件)或类/函数(对于复合组件),但得到:未定义。您可能忘记从定义组件的文件中导出组件,或者您可能混淆了默认导入和命名导入。
作为参考,我正在导入我的组件,如下所示:
import Feedback from "feeder-react-feedback";
并尝试像这样将它嵌入到我的项目中:
<Feedback projectId="12123123" /> // this is when the error gets thrown
如果有帮助,这是我的 package.json: