簡體   English   中英

我應該對我的node_modules文件夾進行硬編碼嗎?

[英]Should I hard code references to my node_modules folder?

我正在創建一個名為ctgen的npm軟件包,我需要引用該軟件包中的文件夾。 我應該對該文件夾的引用進行硬編碼嗎?

例如src = './node_modules/ctgen/scaffold'

還是有一個預制功能可以為我做到這一點?

為了使我的問題更加清楚。 我的包裝中包含以下功能:

var createFile = function (fileName, componentName, doc) {
  // Tell the user what is happening
  console.log(chalk.blue('\nCreating', fileName, '...'))
  // Bring in the scaffold files (note this should point to the scaffold folder in node modules/ctgen)
  var scaffold = './scaffold/' + fileName
  fs.readFile(scaffold, 'utf8', function (err, data) {
    if (err) return console.log(chalk.red(err))
    var result = data.replace(/%cname%/g, componentName)
    if (doc) {
      var d = new Date()
      result = result.replace(/%cfname%/g, doc.componentName)
      result = result.replace(/%cdesc%/g, doc.componentDesc)
      result = result.replace(/%cauthor%/g, doc.userName)
      result = result.replace(/%cagithub%/g, doc.userGithub)
      result = result.replace(/%creationdate%/g, d.getDate() + '/' + d.getMonth() + '/' + d.getFullYear())
    }

    fs.writeFile('./src/components/' + componentName + '/' + fileName, result, function (err) {
      if (err) return console.log(chalk.red(err))
      console.log(chalk.green(fileName, 'created!'))
    })
  })
}

它在名為scaffold的文件夾中查找以下文件:

  • view.php
  • style.styl
  • component.json

然后,它將文件拉入高速緩存,對某些字符串執行查找和替換,然后將輸出寫入用戶項目中的文件。

看來,盡管每當我嘗試引用'scaffold'文件夾時,它都試圖在users項目文件夾中而不是在我的package文件夾中找到它。

我非常不願意通過編寫'/node_modules/ctgen/scaffold'來引用scaffold文件夾,因為這似乎對我來說是錯誤的事情。

您想要的是__dirname

如果我理解您的問題,則您的模塊中包含一個ressource文件夾,由於當前路徑是應用程序而非模塊的路徑,因此無法訪問它。

__dirname將包含腳本文件的路徑,因此將指向您的模塊文件。

我假設您的模塊名為ctgen,而您要訪問的文件位於ctgen / scaffold中。 因此,在您的代碼中,嘗試訪問__dirname/scaffold

總之NO。 如果要了解有關節點如何查找所需文件的更多信息,請閱讀以下內容: https : //nodejs.org/dist/latest-v7.x/docs/api/modules.html#modules_addenda_package_manager_tips

如果要創建npm軟件包,請在package.json指定依賴的npm模塊,並按預期在節點中使用它們(帶有require('your-dependent-module-name') )。 在您發布模塊並有人npm install --save your-module ,它還將把您的依賴項安裝到[usrDir]/node_modules/[your-module]/node_modules ,您的模塊將在其中找到所需的內容。

那個蜜蜂說; 是的,你可以參考__dirname + 'node_modules/[something]但由於它用戶是如何使用您的模塊使得假設不聰明。 同時,node + npm為您解決了這個問題,因此您沒有理由要這樣做)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM