Node.js 为(专用)npm模块设置Babel/Browserify构建
我有一个npm模块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
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的实际版本: