如何在Node应用程序中使用Webpack加载器?

时间:2016-07-19 13:25:07

标签: node.js webpack loader

有没有办法在Nodepack环境中使用Webpack加载器/在Webpack环境中运行Node应用程序?

例如,我有一个带有样式加载器的webpack配置。在我的Node应用程序中,我执行以下操作:

import style from 'style.css'

console.log(style.someClass)

我想像$ node app.js

那样运行它

3 个答案:

答案 0 :(得分:1)

我有一个可能有用的想法,基于Webpack NodeJS API。如果我们将希望能够使用Webpack环境的代码(使用已配置的模块加载器)放入模块中,该怎么办:

appModule.js:

import style from 'style.css'

console.log(style.someClass)

require以及以下内容:

app.js:

import Webpack from 'webpack'
import MemoryFS from 'memory-fs'

...

webpackConfig.entry = 'appModule.js'
webpackConfig.output = 'appModule-out.js'

let compiler = Webpack(webpackConfig)
let mfs = new MemoryFS()

compiler.outputFileSystem = mfs
compiler.run(function (err, stats) {
    require(webpackConfig.output)
})

可能它不起作用,因为需要查找物理FS上的输出......我们可以从内存FS中require吗?我还没试过 - 有什么想法吗?

答案 1 :(得分:0)

Webpack加载器不是转发器或解释器,它们简单地收集资产,然后将其处理为类似SASS或文本连接器;在Webpacks环境的范围内。

因此无法以您希望的方式重用它们,因为虽然您可以导入并调用它们(它们仍然只是函数+类),但它们不会将CSS转换为JSON对象(它们不会你已经按照你想要的例子写了这个。

看起来你只需要一个css解析器的JS实现 - 看看https://github.com/reworkcss/css

答案 2 :(得分:0)

您应该能够创建一个针对node环境的编译,只需调用node output.js即可最终运行该环境,这将立即执行入口点模块。

请注意,如果您使用的是较新版本的Node.js,那么Webpack不支持ES2015模块语法,因此您必须为Node.js配置Babel以及transform the modules