我使用創建了一個新的節點專案
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 之類的平臺上)
uj5u.com熱心網友回復:
聽起來您想創建一個不需要服務器端配置或設定即可運行的單個可執行工件。
有幾個選擇。您可能正在尋找一個 Javascript 捆綁器,例如Rollup、Parcel或Webpack。Webpack 是使用最廣泛的,但通常也是最難配置的。
使用捆綁器
包裹
使用 安裝 Parcel npm i -g parcel,然后將其添加到您的 package.json:
"main": "dist/index.js",
"targets": {
"main": {
"includeNodeModules": true
},
},
然后運行parcel build index.js。而已!
我在 GitHub 上添加了一個簡單的演示。
網頁包
這個 SO question有很多很好的答案。
捆綁器注意事項
許多節點包都帶有二進制/本機插件。例如,賽普拉斯下載并安裝瀏覽器。任何使用本機插件的包都不能與捆綁器一起使用,因為捆綁器無法添加二進制檔案。這些軟體包仍然需要安裝。
另一種選擇:構建二進制檔案
在上述程序中,您的輸出工件是單個 Javascript 檔案。除了 Javascript 檔案,您還可以生成二進制檔案,從而減少安裝 Node 運行時的需要。查看pkg來執行此操作。雖然pkg是一個相當成熟的產品,但這通常仍被認為是一項實驗性技術,因此可能不適合生產環境。另一方面,您不應該遇到包含本機插件的軟體包的任何問題。閱讀檔案以查看它是否適合您的用例。
uj5u.com熱心網友回復:
https://github.com/vercel/ncc這可能會有所幫助。它包含node_modules在最終工件中
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/450222.html
標籤:javascript npm 使成为 npm-构建 渲染.com
