![](/img/trans.png)
[英]How do I include a JS file from a node_module in my view in Roots?
[英]How do I include a .gitignore file as part of my npm module?
我正在構建一個 npm 模塊,它將為某些軟件項目生成特定的項目模板。 因此,當開發人員安裝我的 npm 模塊並運行它時,我希望程序以某種方式創建文件和文件夾。
我想包含在項目模板中的一個這樣的文件是 .gitignore 文件,因為軟件項目將假定它將通過 git 跟蹤。 但是,當我在我的模塊上調用“npm install”時,npm 會將我所有的 .gitignore 文件重命名為 .npmignore 文件。 在分發模塊時,如何確保我的 .gitignore 文件不會被 npm 篡改?
https://github.com/npm/npm/issues/1862
看起來這是一個已知問題。 底部的答案似乎是推薦的方法。 如果問題或鏈接被破壞:
對我們來說,我認為更好的解決方案是明確的文檔,如果作者希望在他們的生成器中使用 .gitignore,他們需要將他們的文件命名為 .##gitignore##,這將是一個 gitignore 設置為相同的值字符串 gitignore。
這樣,作為模板文件發布到 npm 的文件稱為 .##gitignore## 並且不會被 npm 捕獲,但稍后它會被替換為字符串 .gitignore。
您可以看到處理npm 問題 1862 的多個提交:
lib/init-template/rename.json { ".npmignore": ".gitignore", }
templates/default/.gitignore → templates/default/{%=gitignore%} index.js @@ -114,6 +114,10 @@ generator._pkgData = function (pkg) { + // npm will rename .gitignore to .npmignore: + // [ref](https://github.com/npm/npm/issues/1862) + pkg.gitignore = '.gitignore';
目前 npm 不允許.gitignore
文件作為 npm 包的一部分包含在內,而是將其重命名為.npmignore
。
一個常見的解決方法是在發布之前將其從.gitignore
重命名為gitignore
。 然后作為 init 腳本的一部分,將gitignore
重命名為.gitignore
。 這種方法在Create React App
下面是如何在 Node 中執行此操作,來自Create React App init 腳本的代碼
const gitignoreExists = fs.existsSync(path.join(appPath, '.gitignore'));
if (gitignoreExists) {
// Append if there's already a `.gitignore` file there
const data = fs.readFileSync(path.join(appPath, 'gitignore'));
fs.appendFileSync(path.join(appPath, '.gitignore'), data);
fs.unlinkSync(path.join(appPath, 'gitignore'));
} else {
// Rename gitignore after the fact to prevent npm from renaming it to .npmignore
// See: https://github.com/npm/npm/issues/1862
fs.moveSync(
path.join(appPath, 'gitignore'),
path.join(appPath, '.gitignore'),
[]
);
}
編輯:即使這個答案導致.gitignore
被包含在發布的包中(由unpkg證明),在運行npm install
, .gitignore
文件被簡單地刪除! 因此,即使讓 NPM 包含該文件也是不夠的。
另一個解決方案(更簡單的imo):
在 repo 中包含.gitignore
和.npmignore
。 將以下內容添加到您的.npmignore
文件中:
!.gitignore
!.npmignore
現在.npmignore
已經存在於已發布的包中,NPM 不會重命名.gitignore
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.