使用webpack创建npm包

18

我正在创建一个npm包,并使用webpack作为加载器,如babel、eslint等。然而,我的假设是,打包后的最终版本应该只包含一个模块,不包括webpackBootstrap

这是我当前的包、webpack配置和源代码。我简化了它,只是为了让它“工作”。

我检查它是否有效的步骤:

npm install
npm run build
npm install -g .
node
var test = require('test-package');

导致此错误:

Error: Cannot find module 'test-package'
    at Function.Module._resolveFilename (module.js:337:15)
    at Function.Module._load (module.js:287:25)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)
    at repl:1:12
    at REPLServer.defaultEval (repl.js:248:27)
    at bound (domain.js:280:14)
    at REPLServer.runBound [as eval] (domain.js:293:12)
    at REPLServer.<anonymous> (repl.js:412:12)
    at emitOne (events.js:82:20)

我刚开始学习使用webpack和npm,如果您需要更多信息,请告诉我。

1个回答

13

output.libraryTarget设置为umd,这样可以轻松从各种模块系统(全局、AMD、CommonJS)中使用。

output.library是另一个有用的字段需要设置。它应该与你想要的库全局名称匹配。


除此之外,还有一个问题。为了使导入工作正常,需要使用npm link。这个功能在开发过程中非常有用。你可以通过npm unlink来撤销链接。


虽然我已经添加了这些更改,但是软件包仍然无法工作。我已经更新了问题,并提供了一个链接,其中包含了简化的配置/源代码以及我正在执行的检查软件包是否可用/可安装的步骤。 - Martin Tale
根据错误信息,我认为可能与npm有关。为什么不使用npm link呢?顺便说一下,我已经在我的样板文件中解决了这些问题。如果你有时间研究它的方法,它会为你做很多事情。 - Juho Vepsäläinen
使用npm link是关键。我对javascript/nodejs非常新手,但我学得很快。如果您在回答中更新npm链接部分(除了您已经提供的配置信息),那么我可以接受您的回答。我看了一下您的样板文件。有很多东西,但看起来不错 - 在完成我的第一个包之后,我会逐步进行。 - Martin Tale
2
谢谢。已添加。我有一个章节,其中详细介绍了这些技术。这可能比样板更容易理解。 - Juho Vepsäläinen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接