红联Linux门户
Linux帮助

如何打包nodejs snap应用

发布时间:2016-11-11 10:03:10来源:linux网站作者:ubuntutouch
在snap应用开发中,我们可以把一个nodejs的应用打包为snap包.它的开发其实非常简单.在今天的这篇文章中,我们来介绍如何开发一个nodejs的snap应用.
 
1)在desktop上开发并测试
我们可以在我们的Ubuntu Destop上开发好我们的nodejs应用.这个应用可以不是snap包形式的.我们可以使用不同的framework来开发充分并测试我们的应用.虽然IoT的设备环境和我们的PC环境不同,但是我们还是可以测试我们的大部分功能.
 
2)打包我们的nodejs应用成为snap包
我们首先把我们的如下的项目:
https://github.com/snapcore/snapcraft/tree/master/tour/10-SNAPS/02-service-confined
首先,我们需要把我们的js文件的开头部分添加:
#!/usr/bin/env node  
这样确保它是一个可以被执行的文件.这个步骤非常重要.否则我们的应用可能不会正常运行.具体的例程代码:
#!/usr/bin/env node  
// Load the http module to create an http server.  
var http = require('http');  
// Configure our HTTP server to respond with Hello World to all requests.  
var server = http.createServer(function (request, response) {  
response.writeHead(200, {"Content-Type": "text/plain"});  
response.end("Hello snapcrafter\n");  
});  
// Listen on port 8000, IP defaults to 127.0.0.1  
server.listen(8000);  
// Put a friendly message on the terminal  
console.log("Server running at http://127.0.0.1:8000/");  
每个nodejs的项目有一个package.json的文件,我们通常可以把我们npm所需要安装的包放入到这个文件中,比如:
 
package.json:
{  
"name": "lights",  
"version": "0.0.0",  
"private": true,  
"scripts": {  
"start": "sudo node ./bin/www"  
},  
"bin": {  
"lights": "./bin/www",  
"server": "./bin/server.js",  
"publish": "./bin/publish.js",  
"subscribe": "./bin/subscribe.js"  
},  
"dependencies": {  
"body-parser": "~1.15.1",  
"cookie-parser": "~1.4.3",  
"debug": "~2.2.0",  
"express": "~4.13.4",  
"fs": "0.0.1-security",  
"jade": "~1.11.0",  
"morgan": "~1.7.0",  
"mosca": "^2.2.0",  
"mqtt": "^2.0.1",  
"serialport": "^4.0.3",  
"serve-favicon": "~2.3.0"  
}  
}
我们可以通过上面的方法,把我们所需要的包最终打入到我们的snap包中.另外我们也可以直接在我们的snapcraft.yam中定义所需要的安装包.开发者可以根据自己的需要进行选择.
 
snapcraft.yaml:
name: shout  
version: 0.52.0  
summary: A self hosted web IRC client  
description: This example is not really production quality  
confinement: strict  
apps:  
server:  
command: bin/shout --home $SNAP_DATA  
daemon: simple  
plugs: [network, network-bind]  
parts:  
shout:  
plugin: nodejs  
node-packages:  
- shout
在上面,我们也定义了一个npm所需要安装的包shout.我们甚至可以运用node-engine来定义我们所需要的nodejs的版本:
node:  
plugin: nodejs  
source: .   
node-engine: 6.9.1
 
当然最重要的是指定我们所需要的执行文件.在上面的例程中,我们指定/bin/shout来运行我们的应用.更多关于nodejs plugin的介绍可以在我们的官方文档(http://snapcraft.io/docs/reference/plugins/nodejs)中介绍.
我们的nodejs应用可以在我们的Ubuntu Desktop 16.04上打包为snap应用,并测试.如果我们想把我们nodejs应用运用到我们的arm设备上,我们可以参阅我的文章"如何为树莓派安装Ubuntu Core并在Snap系统中进行编译"(http://www.linuxdiyf.com/linux/23642.html).
 
好啦,打包一个nodejs为snap应用就是这么简单.你们会了吗?
 
本文永久更新地址:http://www.linuxdiyf.com/linux/25914.html