我正在尝试找出一种有效的方法来捆绑和分发各种依赖项(节点模块和/或"客户端" -side脚本和框架,如Angular)和我的Electron App。
尽管npm install module-name --save
的基本方法适用于开发,但最终在最小化应用程序的大小和在运行时使用缩小的资源时却不是很好。例如,几乎所有的npm包(包括节点模块)都带有很多额外的行李"像自述文件,各种版本的组件(缩小,不缩小,ES2015,没有ES2015等)。虽然这些文件非常适合开发,但所有这些文件绝对不需要包含在您要分发的版本中。
目前似乎有两种方法可以解决问题:
package.json
系统。--save-dev
进行npm安装,然后在构建应用程序以进行分发时应使用prunning。在这方面,我有几个问题:
package.json
系统,如果可以用--save-dev
安装dev-only modules / dependencies,然后在实际的app build / compilation中使用pruning ?谢谢。
答案 0 :(得分:1)
我仍处于采用代码部署最佳实践的学习曲线中。但这是我推荐的首发清单。
npm install --save-dev
是隔离开发和构建特定包的第一个最简单的方法。这包括gulp / grunt / webpack及其加载器或其他软件包。它们仅用于构建,而不会用于实际运行的代码中。应用程序使用的所有程序包都应与npm install --save
一起安装,以便它可用于项目级别。因此,在生产中,你不会在没有安装开发包的机器中安装npm - 生产。有关详细信息,请参阅What's the difference between dependencies, devDependencies and peerDependencies in npm package.json file?。 var util = require('./myapp/lib/utils.js')
这是提及代码中所需依赖项的有效方法。 Web包构建器像生成过程一样运行。但是不是通过html文件查找所有js文件,而是查看启动js文件并确定require语句提到的所有相关代码并相应地打包。它还缩小了代码。它还将css和图像文件加载到一个包中以减少服务器跳闸。如果需要,可以将某些模块配置为在运行时动态加载,从而进一步减少页面加载。 NPM vs. Bower vs. Browserify vs. Gulp vs. Grunt vs. Webpack详细讨论了这一点。 客户端
webpack.dev.config.js和webpack.prod.config.js可以在根级别。
我发现这个区域是一个海洋和不同的最佳实践学校。这可能是一套最佳实践。随意选择适合您的方案的集合。期待更多评论添加到此集合。