javascript - 简单的 NPM 包捆绑/销售?

标签 javascript npm webpack

免责声明:我主要是一名后端开发人员,没有丰富的 FE 知识。

我正在编写一个非 SPA Golang Web 应用程序,它生成 HTML,然后将其发送给用户。 因为我想更好地更新和监控我的 Javascript/CSS 依赖项,所以我想切换到使用带有 package.json 文件的 NPM,而不是手动下载和附加 CSS 和 Javascript 库。这些是典型的jquery、bootstrap和fontawesome。 除此之外,我每页都有一个用于交互内容的 Javascript 文件。

例如

+ js
  lib.js    -> jquery, bootstrap, fontawesome
  - home    -> specific JS
  - account -> specific JS
  ...
+ css
  theme.css
  custom.css

但是,我认为没有简单的解决方案可以仅 npm install 并将已安装的软件包导出到缩小的 vendor.js 文件。 我查看了 webpack ( go-webpack ),但整个树的晃动、捆绑和填充非常复杂。此外,webpack 希望您在本地提供资源时运行开发服务器,执行一些 block 魔法,并且仍然在每个 JS 文件中引用全局库。 (防止被树摇走)

是否有更简单的方法将 package.json 文件转换为精简的捆绑资源集?

最佳答案

TLDR:“只见树木,不见森林” - 只需获得 webpack.config.js 的最低配置即可在深入研究更高级的细节之前先工作,例如树摇动、分块等......

您需要使用 bundler ,例如 WebpackParcel ,捆绑您所有的 JavaScript Assets 成单JavaScript文件。我认为你一开始就想做太多事情:

由于这些是更高级的概念...也许您可以从最初创建一个 JavaScript 开始。您的应用程序将使用的 bundle (或基于每页的 bundle )。这不会那么复杂,并且需要应用程序中以下文件的入口点:

  1. 应用程序的JavaScript索引(这应该加载您的应用程序使用的 JavaScript)
  2. CSS指数。 (理想情况下,您有一个加载其他应用程序样式文件的根样式文件)

现在为您的应用程序 Assets 设置适当的加载器和插件,例如 MiniCssExtractPlugin , file-loader等等...来加载和处理应用程序的 Assets 。一旦一切正常,只需将生成的 bundle 附加到 <script> 中即可。根目录中的标签 html索引页面,而不是最初配置 webpack-dev-server 。这将允许您的应用程序使用捆绑的 JavaScript文件,无需配置 webpack-dev-server.要创建新的 bundle ,请在 scripts 中创建自定义命令您的package.json部分文件,大致如下:

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "webpack -p --progress --config webpack.config.js",
    "dev-build": "webpack --progress -d --config webpack.config.js",
    "watch": "webpack --progress -d --config webpack.config.js --watch"
  },

只有在一切正常后,您才应该担心更高级的性能提升,例如:分块/treeshaking/等...看看以下教程,因为它们可能会有所帮助:Intro to WebpackFull Stack Web application 。请注意,第二个教程有点过时,因为现在实际上是使用 create-react-app cli 而不是自己为 react 设置构建配置项目,但是原则是合理的,并向您展示如何设置您自己的构建配置。

希望有帮助!

关于javascript - 简单的 NPM 包捆绑/销售?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56045491/

相关文章:

javascript - 使用预连线事件动态添加超链接到 DOM?

javascript - 为什么两个函数具有相同的方法给出不同的输出?

angular - 如何在 Angular 5+ 中使用 ngx-file-drop 验证文件?

Webpack - 确定包含文件的原因

javascript - 如何从 Rails 中的 JS 文件中引用已编译的 Webpack 包文件的路径?

javascript - 通过多个模板渲染主干 View

javascript - CSS 变换元素建议

npm - 无法加载配置 "plugin:vue/no-layout-rules"来扩展

json - sequelize.query() 两次返回相同的结果

ruby-on-rails - 使用 Webpack 在 Rails 6 上设置 Bootstrap 4.3