我创建了一个新的节点项目
npm init
npm install apollo-server然后,我使用以下代码添加了一个index.js文件:
const { ApolloServer, gql } = require('apollo-server');
const typeDefs = gql`
type Query {
hello: String
}
`;
const server = new ApolloServer({
typeDefs,
mocks: true,
});
server.listen().then(({ url }) => {
console.log(` Server ready at ${url}`)
});虽然我可以使用node index.js来运行这个程序,但是我如何才能从我的index.js中创建一个构建,这样它在运行时就不直接需要模块了?(目标:在像render.com这样的平台上部署它)
发布于 2022-03-25 06:44:22
听起来,您想要创建一个不需要服务器端配置或安装即可运行的单个可执行工件。
这方面有几个选择。您可能正在寻找一个Javascript,比如卷起、包裹或Webpack。Webpack是应用最广泛的,也是一般最难配置的。
使用打包机
包裹
使用npm i -g parcel安装包,然后将其添加到您的package.json中:
"main": "dist/index.js",
"targets": {
"main": {
"includeNodeModules": true
},
},然后运行parcel build index.js。就这样!
我添加了一个简单的基于GitHub的演示。
Webpack
有许多关于这个问题有很好的答案。
邦德勒警告
许多节点包都随二进制/本机加载项一起提供。例如,柏树下载并安装浏览器。任何使用本机加载项的包都不能使用绑定程序,因为绑定程序无法添加二进制文件。这些软件包仍需安装。
另一种选择:构建二进制文件
在上面的过程中,输出工件是一个Javascript文件。与Javascript文件不同,您还可以生成一个二进制文件,从而减少安装Node运行时的需要。请查看pkg以完成此操作。虽然pkg是一个相当成熟的产品,但通常仍然认为这是一种实验技术,因此可能不适合于生产环境。另一方面,您不应该在包含本机插件的包中遇到任何问题。阅读文档,看看它是否适合您的用例。
发布于 2022-03-25 06:55:25
https://github.com/vercel/ncc这可能会有帮助。它在最终的工件中包括了node_modules。
https://stackoverflow.com/questions/71579398
复制相似问题