Node.js 如何使用grunt debian包填充源包?
我使用Node.js 如何使用grunt debian包填充源包?,node.js,gruntjs,debian,packaging,Node.js,Gruntjs,Debian,Packaging,我使用NodeJS和grunt+grunt debian包来构建.deb文件,它可以很好地创建部署文件foo_v.v.v_all.deb 我还想在debian源代码包(foo_v.v.v.tar.xz)中分发普通的和未加密的源文件,但该文件相当空 要正确填充源文件,我必须做什么 我的环境: 当前目录:/home/dev/src/foo myGrunt.js的相关部分 debian_package: { options: { maintainer: { name: "xxx
NodeJS
和grunt
+grunt debian包
来构建.deb
文件,它可以很好地创建部署文件foo_v.v.v_all.deb
我还想在debian源代码包(foo_v.v.v.tar.xz)中分发普通的和未加密的源文件,但该文件相当空 要正确填充源文件,我必须做什么 我的环境:
当前目录:
/home/dev/src/foo
my
Grunt.js的相关部分
debian_package: {
options: {
maintainer: {
name: "xxx",
email: "xxx"
},
prefix: "",
name: "foo",
postfix: "",
short_description: "xxx",
long_description: "xxx",
version: "<%=pkg.version%>",
preinst: {
src: "scripts/preinst",
},
postinst: {
src: "scripts/postinst",
},
postrm: {
src: "scripts/postrm",
},
prerm: {
src: "scripts/prerm",
},
dependencies: "xxx",
replaces: "xxx",
conflicts: "xxx"
},
deploy: {
files: [{
expand: true, // enable dynamic expansion
cwd: 'dist', // src matches are relative to this path
src: ['**'],
dest: '/usr/lib/foo'
}, {
src: "scripts/foo",
dest: "/etc/init.d/foo"
}, {
src: 'root-ca.conf',
dest: '/usr/lib/foo/root-ca.conf'
}]
}
}
// ----- snip -----
grunt.registerTask('package', ['debian_package']);
检查文件的结果:
ll tmp/
-rw-r--r-- 1 dev dev 22758744 Sep 16 00:10 foo_0.1.63_all.deb
-rw-r--r-- 1 dev dev 608 Sep 16 00:10 foo_0.1.63.dsc
-rw-r--r-- 1 dev dev 1400 Sep 16 00:10 foo_0.1.63_i386.changes
-rw-r--r-- 1 dev dev 76288 Sep 16 00:10 foo_0.1.63.tar.xz
tar -tJf tmp/foo_0.1.63.tar.xz
packaging/
packaging/debian/
packaging/debian/postinst
packaging/debian/compat
packaging/debian/postrm
packaging/debian/preinst
packaging/debian/dirs
packaging/debian/source/
packaging/debian/source/format
packaging/debian/changelog
packaging/debian/prerm
packaging/debian/copyright
packaging/debian/links
packaging/debian/control
packaging/debian/rules
packaging/Makefile
我希望目录/home/dev/src/foo/app
中的所有文件都包含在文件tmp/foo_0.1.63.tar.xz
我该怎么办?我应该更新Makefile
?如果是:如何操作?在Debian打包中,tar.xz
(称为“orig tarball”)的内容在打包开始之前固定。由于grunt似乎正在生成这个tarball,您可能需要在grunt中找到或添加一个选项,以将实际的源代码包含在(tarball)中。奇怪的是,由于它是源tarball,默认情况下它没有
Debian本身使用的另一个解决方案是创建一个包含源代码的foo-source\u 0.1.63\u all.deb
包
(是的,您可以在构建过程中使用tar.xz
,但这不仅难看得无法形容,而且可能会破坏各种校验和)最终我得到了它。我必须正确地更新Gruntfile.js
首先,我在config
部分定义了目标目录:
grunt.initConfig({
config: {
// [...]
src_pkg: 'node_modules/grunt-debian-package/packaging
},
然后,我在copy
任务中为源代码添加了一个部分,将自己的源代码与节点_模块分开:
copy: {
// [...]
src_pkg: {
files: [{
expand: true,
dot: true,
dest: '<%= config.src_pkg %>',
src: [
'**',
'!**/tmp/**',
'!**/.tmp/**',
'!**/dist/**',
'!**/.git/**',
'!**/node_modules/**', // node_modules will be copied separately
]
}]
},
src_pkg_modules: {
files: [{
expand: true,
cwd: 'node_modules',
dest: '<%= config.src_pkg %>/node_modules',
src: [
// list all node_modules you want to copy also here
]
}]
},
},
在命令行上,通过调用
grunt package
。。。在/tmp
中,您可以找到完整的tarball(查看大小!):
grunt.registerTask('package', [
'copy:src_pkg',
'copy:src_pkg_modules',
'debian_package']);
grunt package
ll tmp/
-rw-r--r-- 1 dev dev 22678070 Okt 6 22:09 foo_0.1.78_all.deb
-rw-r--r-- 1 dev dev 617 Okt 6 22:07 foo_0.1.78.dsc
-rw-r--r-- 1 dev dev 1408 Okt 6 22:09 foo_0.1.78_i386.changes
-rw-r--r-- 1 dev dev 38541304 Okt 6 22:07 foo_0.1.78.tar.xz