2016-02-01 96 views
17

我创建了一个npm包,并使用像babel,eslint等加载器的webpack。但是我假设包的最终编译版本应该只包含一个模块,没有webpackBootstrap。我的当前package, webpack config and source。我把它剥离下来,让它“工作”。使用webpack创建npm包

步骤我拿着检查,如果它的工作:

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所以让我知道如果你需要更多的信息。

回答

11

设置output.libraryTargetumd。这将为您提供各种模块系统(全球,AMD,CommonJS)易于使用的东西。

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


除此之外还有另一个问题。需要使用导入工作npm link。此功能在开发过程中非常有用。您可以通过npm unlink恢复链接。

+0

虽然我已经添加了这些更改 - 包仍然不起作用。我已经更新了一个链接去掉config/source的问题以及我正在检查程序包是否工作/可安装/可用的步骤。 –

+0

基于错误我会说它可能是一些与npm有关的东西。为什么不使用'npm link'?顺便说一句,我已经在我的[样板](https://github.com/survivejs/react-component-boilerplate)中整理了这些类型的问题。如果您有时间研究其方法,它会为您做很多工作。 –

+0

使用npm链接是关键..我对JavaScript/nodejs很新,但我很快学会了..如果你用npm链接部分更新你的答案(除了你已经提供的配置信息),那么我可以接受你的回答。我看了一下你的样板。这里有很多,但看起来不错 - 在我完成我的第一个包装后,会一步一步地完成它。 –