将外部lib绑定到我自己的javascript库中

Bundle external lib to my own javascript library

本文关键字:自己的 javascript 库中 我自己 外部 lib 绑定      更新时间:2024-03-13

我正在尝试构建一个库,我想使用fabricjs作为它的依赖项之一。对于那些安装了fabric的人来说,他们知道安装它并不是一件小事(它需要特定的库、特定的节点版本等)。我已经成功地将包安装到了我的项目中,并且我正在成功地使用它。

我想知道的是,将我的特定库作为一个包发布到npm注册表。

我的问题是,我发布了我的包,当有人想安装我的包时,我会将同样的复杂性"转移"给她/他。我的库的用户如何在不首先执行与安装fabricjs包相同的步骤的情况下安装它?

我研究了bundledDependencies属性,但没有取得多大成功。

我不认为自己是javascript专家,所以我的问题可能根本错误。。

我目前正在使用npm,我也熟悉webpack,如果可以的话。发布i do(从package.json):

"scripts": {
  "build": "babel ./src --out-dir ./lib",
  ...

最后,我通过一些webpack帮助解决了这个问题,解决方案是使用webpack构建,所有库都将捆绑在一个文件中,详细信息如下:

1) 创建一个webpack配置(比如说webpack.cfg.js)如下(这里有帮助):

module.exports = {
    entry: {
        src: './src'
    },
    output: {
        path: path.join(__dirname, 'lib'),
        filename: 'index.js',
        libraryTarget: 'umd'
    },
    //Use externals to exclude libraries
    //externals: ['lodash'],
    resolve: {
        extensions: ['', '.js']
    },
    module: {
        loaders: [
            {
                test: /'.(js|jsx)$/,
                include: [srcPath],
                exclude: /(node_modules|bower_components|lib)/,
                loaders: ['babel']
            }
        ]
    }
    ...
}

2) 然后使用构建

"scripts": {
    "build": "webpack --config webpack.cfg.js --display-modules",
    ....
}

它是有效的,任何外部lib都包含在生成的index.js中,就像一个胖罐子(对于java世界)

我的2美分