我想发布一个包含我的源代码和分发文件的npm包。我的Github存储库包含src
文件夹,其中包含JavaScript源文件。构建过程生成包含分发文件的dist
文件夹。当然,dist
文件夹不会被检入Github存储库。
如何以某人npm install
获取src
以及dist
文件夹的方式发布npm包?目前,当我从我的git存储库运行npm publish
时,它只会导致src
文件夹被发布。
我的package.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": {
...
}
}
答案 0 :(得分:127)
当你npm publish
时,如果你没有.npmignore
文件,npm将使用你的.gitignore
文件(如果你排除了dist
文件夹)。
要解决您的问题,请根据您的.npmignore
文件创建.gitignore
文件,而不要忽略dist文件夹。
Soure:https://docs.npmjs.com/misc/developers#keeping-files-out-of-your-package
答案 1 :(得分:74)
看看"文件" package.json文件的字段 https://docs.npmjs.com/files/package.json#files
来自文档:
"文件" field是要包含在项目中的文件数组。如果您在数组中命名文件夹,那么它还将包含该文件夹中的文件。 (除非他们会被另一条规则忽略。)
答案 2 :(得分:1)
如何使用脚本中的数据文件的最小示例
另一个常见的用例是拥有脚本需要使用的数据文件。
中提到的技术可以轻松完成此操作完整的示例可以在以下位置找到:
使用此设置,文件mydata.txt
会在安装后放入node_modules/cirosantilli-data-files/mydata.txt
,因为我们已将其添加到files:
的{{1}}条目中。
我们的函数package.json
然后可以通过使用myfunc
查找该文件并使用其内容。当然,它也只适用于可执行文件require.resolve
。
package.json
./cirosantilli-data-files
mydata.txt
{
"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"
}
index.js
hello world
cirosantilli-数据文件
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;