在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应用就是这么简单.你们会了吗?