的package.json:
...
"name": "mypackage",
"main": "src/index.js"
...
目录结构:
|- src/
|--- index.js
|--- other.js
我可以src/index.js
使用require('mypackage');
,但我怎么能要求src/other.js
?
如果答案是require('mypackage/src/other');
,有没有办法让它成为我所需要的require('mypackage/other');
(即教学节点源文件目录是什么模块?
答案 0 :(得分:11)
AFAIK您必须在根目录中明确公开它:
目录结构:
|- src/
|--- index.js
|--- other.js
|- other.js
然后在/other.js
module.exports = require('src/other.js');
现在你可以require('mypackage/other')
答案 1 :(得分:4)
我目前正在研究同样的事情。
Package.json
有一个名为' files':
http://blog.kewah.com/2014/npm-as-a-front-end-package-manager/
https://docs.npmjs.com/files/package.json
"文件" field是要包含在项目中的文件数组。如果您在数组中命名文件夹,那么它还将包含该文件夹中的文件。
但我还没有找到如何导入/要求这样的文件。
我没有真正看到列出这些文件的另一点,以便能够import/require
他们?
如果文件列在此文件数组中,我可以从包中导入文件。
{
"name": "local-ui-utilities",
"version": "0.0.1",
"description": "LOCAL UI Utilities",
"main": "index.jsx",
"author": "Norbert de Langen",
"license": "none",
"dependencies": {
},
"files": [
"/colors/sets/variables.css"
]
}
我可以使用postcss-import从包中导入css文件:
@import "local-ui-utilities/colors/sets/a.css";
这可能不是你的用例,但postcss-import只是在引擎盖下使用npm。所以这也适用于你的用例,我想。
这个问题和接受的答案似乎有关: Node/NPM: Can one npm package expose more than one file?
答案 2 :(得分:1)
您必须在根文件夹中明确公开该文件,但许多项目(包括旧版本的lodash)在预发布步骤中执行此操作。事实上,a package完全符合@Creynders的建议,在根文件夹中添加了module.exports = require('./path/to/file')
个文件。不久前我在开始时写了guide,但要点很简单。
安装强>
npm install --save-dev generate-export-aliases
<强>配置强>
{
"name": "my-package",
"scripts": {
"prepublish": "generate-export-aliases"
},
"config": {
"exportAliases": {
"other": "./src/other"
}
}
}
使用强>
const other = require('my-package/other')
免责声明:我是该软件包的作者
答案 3 :(得分:1)
由于没有人知道如何执行所需的行为,所以我们不能停滞不前,现在最好的答案是:
从Patrick解决方案及其软件包generate-export-aliases
:我们可以添加一些npm脚本来自动化整个发布过程。
您可以直接在./src/
子目录中的commonjs中编写代码,或者使用./dist
中转译的一些新的闪亮ES功能,将公开您的模块文件,因此添加npm脚本:
"scripts": {
"expose": "generate-export-aliases",
"prepublish": "npm run expose",
"postpublish": "git add . && git reset --hard HEAD"
}
或SAVER脚本
"scripts": {
"expose": "generate-export-aliases",
"prepublish": "git ceckout -b prepublish-expose && npm run expose",
"postpublish": "git add . && git stash && git stash drop && git checkout master && git branch -d prepublish-expose"
}
generate-export-aliases
您可以使用gulp
任务运行程序(如果需要,可以进行转换并将文件直接放在根目录中,而无需再次复制或移动)。
实际上,这是暴露步骤,您可以保持prepublish
和postpublish
脚本不变,而只需更改expose
脚本。节省时间并直接在根目录中构建。