簡體   English   中英

如何使Webpack在位於項目文件夾外部的js腳本中使用項目的“ node_modules”?

[英]How to make Webpack use project's “node_modules” in js scripts located outside the project folder?

我有Node.js項目和以下文件夾結構:

  • LIB
    • 真棒,formatter.js
  • FrontEndApp
    • prettify.js
    • node_modules
      • 真棒,解析器
  • BackEndApp
    • ...

我在prettify.js腳本中使用awesome-parser模塊和awesome-formatter.js庫,如下所示:

require('awesome-parser')

require('../lib/awesome-formatter.js')

反過來, awesome-formatter.js應該使用awesome-parser

require('awesome-parser')

我的FrontEndApp已配置為使用Webpack,並且我正在嘗試使用npm run dev命令在dev模式下運行它。 但是,出現以下錯誤:

錯誤編譯失敗,出現1個錯誤

找不到這些依賴項:

* /home/user/dev/lib/awesome-formatter.js中的awesome-parser

我不想在FrontEndApp內部移動awesome-formatter.js ,因為我也在BackEndApp項目(可能還有其他一些項目)中使用了它,並且我不想為此在“ lib”中創建單獨的“ node_modules”不要復制磁盤上已安裝的模塊。

因此,我的問題是,如何使Webpack在位於項目文件夾外部的js腳本中使用項目的“ node_modules”?

PS當然,有一些變通辦法,例如符號鏈接或從lib/awesome-fromatter制作功能齊全的模塊(帶有package.json等)並將其安裝到FrontEndApp/node_modules ,但是有直接的方法來解決此問題嗎?

我已經找到了解決辦法: resolve.modules前人的精力被添加到的WebPack配置文件。

module.exports = {
  ...
  resolve: {
  ...
    modules: [
      'node_modules',
      resolve('node_modules')
    ]
  },
  ...
}

這意味着Webpack會在'node_modules'中搜索模塊作為相對子文件夾(這是通常的行為),並且也在項目的'node_modules'的絕對路徑中搜索: resolve('node_modules') ,以便腳本位於外部文件夾中該項目(例如我結構中的lib )可以找到並使用它。

暫無
暫無

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

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