我想发布一个npm包,其中包含我的源代码以及分发文件。我的GitHub存储库包含src文件夹,其中包含JavaScript源文件。构建过程生成包含分发文件的dist文件夹。当然,dist文件夹不会被签入GitHub存储库。
我如何发布一个npm包的方式,当有人做npm安装,他们得到src以及dist文件夹?目前,当我从Git存储库中运行npm publish时,只会发布src文件夹。
我的包。Json文件是这样的:
{
"name": "join-js",
"version": "0.0.1",
"homepage": "https://github.com/archfirst/joinjs",
"repository": {
"type": "git",
"url": "https://github.com/archfirst/joinjs.git"
},
"main": "dist/index.js",
"scripts": {
"test": "gulp",
"build": "gulp build",
"prepublish": "npm run build"
},
"dependencies": {
...
},
"devDependencies": {
...
}
}
如何从脚本中使用数据文件的最小示例
另一个常见的用例是拥有脚本需要使用的数据文件。
这可以通过使用文中提到的技术轻松完成:我如何通过require获得我已经加载的模块的路径,而它不是我的(即在一些node_module中)
完整的例子可以在以下网址找到:
来源:cirosantilli / linux-kernel-module-cheat / npm /数据文件
发表:cirosantilli-data-files
通过这样的设置,文件mydata.txt在安装后被放入node_modules/cirosantilli-data-files/mydata.txt,因为我们将它添加到我们的文件:package.json的条目。
然后,函数myfunc可以通过require.resolve找到该文件并使用其内容。当然,它也只适用于可执行文件。/ cirrosantilli -data-files。
package.json
{
"bin": {
"cirosantilli-data-files": "cirosantilli-data-files"
},
"license": "MIT",
"files": [
"cirosantilli-data-files",
"mydata.txt",
"index.js"
],
"name": "cirosantilli-data-files",
"repository": "cirosantilli/linux-kernel-module-cheat",
"version": "0.1.0"
}
mydata.txt
hello world
index.js
const fs = require('fs');
const path = require('path');
function myfunc() {
const package_path = path.dirname(require.resolve(
path.join('cirosantilli-data-files', 'package.json')));
return fs.readFileSync(path.join(package_path, 'mydata.txt'), 'utf-8');
}
exports.myfunc = myfunc;
cirosantilli-data-files
#!/usr/bin/env node
const cirosantilli_data_files = require('cirosantilli-data-files');
console.log(cirosantilli_data_files.myfunc());
如果你想根据分布式文件是本地安装还是全局安装来生成它们的相对路径,那么is-installed-globally包就很有用了