Node.js 为(专用)npm模块设置Babel/Browserify构建

Node.js 为(专用)npm模块设置Babel/Browserify构建,node.js,npm,browserify,babeljs,Node.js,Npm,Browserify,Babeljs,我有一个npm模块my_lib,它提供了一些我希望可供几个下游模块使用的对象my_lib是用ES6编写的,并使用babel进行传输。它生活在一个私有的github repo中,下游模块的建筑主机可以访问它。与任何其他节点模块一样,使用my_lib的下游模块能够从my_lib导入符号,这一点很重要 我希望能够从‘my_lib’编写import{libA,libB}位于任何下游模块中,并具有my_lib预期定义的libA,假设下游模块的包.json包含在依赖项中类似于“my_lib”的条目:“org

我有一个npm模块
my_lib
,它提供了一些我希望可供几个下游模块使用的对象
my_lib
是用ES6编写的,并使用babel进行传输。它生活在一个私有的github repo中,下游模块的建筑主机可以访问它。与任何其他节点模块一样,使用
my_lib
的下游模块能够从
my_lib
导入符号,这一点很重要

我希望能够从‘my_lib’编写
import{libA,libB}
位于任何下游模块中,并具有
my_lib
预期定义的
libA
,假设下游模块的
包.json
包含在
依赖项中
类似于“my_lib”的条目:“orgname/reponame#branchname”

scripts
下的
my_lib
package.json
中有一个条目,如下所示:

"postinstall" : "npm run build",
"build": "mkdir ./dist && browserify ./src/index.js -t babelify -t envify -o index.js",`
其中
/src/index.js

// Entry point for bundling
export * as libB from "../sublib1/adapter";
export * as libA from "../sublib2/adapter";
如果需要,我可以从
my_lib/dist/bundle
调用
import{libA,libB}
,尽管这有点不可取。主要的事情是使我从
my_lib
导出的所有名称在下游模块中可用。我可能对browserify和babel的情况感到困惑。我非常乐意将postinstall/build挂钩更改为任何更方便的形式


目前,在下游包(一个
express.js
app)中,我有一行
import*作为我的库中的适配器
express
应用程序上运行
npm安装
,无误完成。我在
node\u modules/my\u lib
中看到了我想要的
index.js
文件。当我在导入
后中断我的应用程序时(或
为此需要
),存在
适配器
对象,但对象上没有
libB
libA
。它似乎是一个纯香草JS对象,没有成员,只有
\uuuuu proto\uuuu

通常在这种情况下,我只使用babel,避免浏览。我在
package.json中使用类似的内容:

{
  "main": "dist/index.js",
  "scripts": {
    "postinstall": "babel src/ -d dist/"
  },
  "dependencies": {
    "babel-cli": "^6.9.0",
    "babel-preset-es2015": "^6.9.0"
  }
}  
请注意,包的
main
入口点指向
dist
,而不是
src
。这是为了使
导入my_lib
要求('my_lib')
(两者都能很好地工作)使用库的编译版本

此外,这是
.babelrc
文件的内容,它与
package.json

{
  "presets": ["es2015"]
}

通常情况下,在这种情况下,我将只使用巴贝尔和避免browserify。我在
package.json中使用类似的内容:

{
  "main": "dist/index.js",
  "scripts": {
    "postinstall": "babel src/ -d dist/"
  },
  "dependencies": {
    "babel-cli": "^6.9.0",
    "babel-preset-es2015": "^6.9.0"
  }
}  
请注意,包的
main
入口点指向
dist
,而不是
src
。这是为了使
导入my_lib
要求('my_lib')
(两者都能很好地工作)使用库的编译版本

此外,这是
.babelrc
文件的内容,它与
package.json

{
  "presets": ["es2015"]
}

我同时使用巴别塔和布劳塞里菲

mypackage.json

{
  "name": "my-project",
  "version": "1.0.0",
  "scripts": {
    "build:js": "watchify assets/src/js/main_1.js -o 'exorcist assets/dist/js/main_1.js.map > assets/dist/js/main_1.js' -d -t [babelify --presets [latest]]",
    "build:scss": "node-sass -w -r assets/src/scss/ -o assets/dist/css/",
    "build": "npm run build:scss & npm run build:js"
  },
  "devDependencies": {
    "babel-cli": "^6.0.0",
    "babel-preset-latest": "^6.16.0",
    "babelify": "^7.3.0",
    "browserify": "^13.1.1",
    "exorcist": "^0.4.0",
    "node-sass": "^4.5.0",
    "watchify": "^3.7.0"
  },
  "browserify": {
    "transform": [
      "babelify"
    ]
  }
}

package.json的实际版本:

我同时使用babel和browserify

mypackage.json

{
  "name": "my-project",
  "version": "1.0.0",
  "scripts": {
    "build:js": "watchify assets/src/js/main_1.js -o 'exorcist assets/dist/js/main_1.js.map > assets/dist/js/main_1.js' -d -t [babelify --presets [latest]]",
    "build:scss": "node-sass -w -r assets/src/scss/ -o assets/dist/css/",
    "build": "npm run build:scss & npm run build:js"
  },
  "devDependencies": {
    "babel-cli": "^6.0.0",
    "babel-preset-latest": "^6.16.0",
    "babelify": "^7.3.0",
    "browserify": "^13.1.1",
    "exorcist": "^0.4.0",
    "node-sass": "^4.5.0",
    "watchify": "^3.7.0"
  },
  "browserify": {
    "transform": [
      "babelify"
    ]
  }
}
package.json的实际版本: