【问题标题】:Aliasing modules using NodeJS使用 NodeJS 给模块起别名
【发布时间】:2017-02-22 15:27:15
【问题描述】:

这里有一些上下文:不是我不能使用 Webpack,而是我不想使用 Webpack。我想让一切都尽可能地“香草”。

目前在项目中创建模块时,您必须使用相对或绝对路径来要求它们,例如在以下目录中..

project/
├── index.js
├── lib/
│   ├── network/
│   │      request.js
│   │      response.js
├── pages/
│   ├── foo.js

考虑到我们在 index.js 中,我们将通过

导入请求
var networkRequest = require('./lib/network/request.js')

如果我们在 foo.js 中,我们将通过

导入请求
var networkRequest = require('../lib/network/request.js')

我想知道的是,如果有任何方法可以在 Package.json 或其他任何地方设置一个本地别名:

localPackages = [
    { name: 'network-request', path: './lib/network/request.js' }
];

你可以做的事情

var networkRequest = require('network-request')

来自任何文件,它将提供正确的路径。

【问题讨论】:

    标签: node.js require commonjs


    【解决方案1】:

    是的,这就是npm link 的用途。原生且开箱即用。

    你也可以在package.json中设置local paths

    {
      "name": "baz",
      "dependencies": {
        "bar": "file:../foo/bar"
      }
    }
    

    【讨论】:

    • 这不起作用,不幸的是:"dependencies": { "react": "15.3.2", "react-native": "0.35.0", "@components/RootTabBar": "file:./src/components/RootTabBar" }, 出现“无法解析模块”错误。
    • 我不确定@components/RootTabBar 应该 解决的语法。我从来没有见过一个模块名称中包含除连字符以外的特殊字符。
    • 种类繁多:npmjs.com/~exponent -- 我也尝试过使用常规名称,即:“RootTabBar”,但这也不起作用。
    猜你喜欢
    • 2012-10-07
    • 2012-07-19
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    • 2016-08-05
    相关资源
    最近更新 更多