【问题标题】:Bundling Within Installed Private Modules?在已安装的私有模块中捆绑?
【发布时间】:2017-05-12 05:56:13
【问题描述】:

所以我在下一个项目中采用模块化 JS 方法,所有这些对我来说都是一个全新的过程。 由于我目前的经验有限,因此最好保持低调。

所以我在 npm 上有了我的私人包:

@name/package-name

现在,我的私有包由几个带有导出的 JS 文件组成,以在开发期间保持模块化和整洁。

我在我的新项目中使用这个包:

npm i @name/package-name -S

我从我的 node_modules 中需要我的包,使用加载器/捆绑器,例如 webpack、requireJS 等:

var test = require('@name/package-name');
...
//use the imported code

因此,这导致需要在其定义的入口点输入我的包。

现在这就是我感到困惑的地方。 安装的私有包是否应该有一个先前捆绑的“entry.js”文件(来自单独的 JS 文件),以便单个条目文件包含我的新项目中的代码需要运行的所有内容?

如果是这样,这是否意味着在我使用 webpack 捆绑我的新项目之前,我在每个模块本身中运行 webpack 来捆绑它?

不胜感激,谢谢。

【问题讨论】:

    标签: javascript node.js module webpack webpack-2


    【解决方案1】:

    安装的私有包是否应该有一个先前捆绑的“entry.js”文件(来自单独的 JS 文件),以便单个条目文件包含我的新项目中的代码需要运行的所有内容?

    您不需要捆绑它,尤其是对于 Node.js 服务器端代码。假设您的模块具有以下文件结构:

    node_modules/@name/package-name/index.js
    node_modules/@name/package-name/foo.js
    node_modules/@name/package-name/bar.js
    

    而index.js 包含以下内容:

    var foo = require('./foo.js');
    var bar = require('./bar.js');
    

    当您从项目运行 require('@name/package-name') 时,节点将运行 index.js 和 require() 以及 foo.js 和 bar.js 文件,方法是在代码执行时从文件系统加载它们。

    这个动态需求链是Node.js entrypoints are slow的原因之一:

    【讨论】:

    • 啊!比我想象的要简单。也许我过于复杂了。感谢您解决这个问题。
    猜你喜欢
    • 2015-05-15
    • 1970-01-01
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    相关资源
    最近更新 更多