2017-01-09 63 views
1

我有一個javascript項目,它作爲節點模塊發佈。對於一些原因,我不得不使用相對路徑來導入在這個項目中的其他文件的一些源代碼:將自己當作npm的節點模塊

// <this_module_path>/action/foo.js 
import execution from './execution'; 
import types from '../types'; 

,也使用模塊名作爲根路徑導入在這個項目中的其他文件:

// <this_module_path>/action/doSomething.js 
// Using module name to import 

// equals to import './helpers.js' in this case (in the same folder) 
import executionHelpers from 'this-module/action/helpers.js'; 
// equals to import '../types/helpers' in this case 
import typeHelpers from 'this-module/types/helpers.js'; 

我怎樣纔能有一個這樣的文件導入其他項目文件使用其模塊名稱,而不是相對路徑?

+1

您是否在使用Babel來轉換您的代碼以將'import'語法轉換爲CommonJS? – bman

回答

0

NodeJS使用CommonJS來導入JavaScript模塊。有一個用於向NodeJS添加ES6 import/export語法的no clear時間線。因此,您需要使用Babel將代碼轉儲到CommonJS模塊系統,然後才能在NodeJS上運行它。

如何做到這一點使用CommonJS的

  1. 爲您this-module模塊一個單獨的包。該軟件包需要在主模塊的node_modules目錄中創建。您可以在node_modules目錄中使用npm init命令執行此操作。

  2. 在這個文件中,你需要創建一個JavaScript文件(通常被稱爲index.js並使其成爲包裝的主要腳本

package.json應該是這個樣子:

{ 
    "name": "test", 
    "version": "1.0.0", 
    "description": "", 
    "main": "index.js", 
} 
  1. index.js中,您可以導出變量(例如helperstypes),並且您可以輕鬆導入它們在你的主包裝中。
相關問題