使用webpack ^v2.2.1
,我想导入一个TypeScript模块作为文本,除了导入相同的模块"通常"。
我认为我可能应该使用raw-loader。但它还没有成功。
一些示例代码:
import DemoComponent from './demo'
import demoCode from 'raw-loader!./demo'
TypeScript正在尖叫着像
这样的东西error TS2307: Cannot find module 'raw-loader!./demo'.
我正在使用ts-loader。
这是我的webpack.config.js
:
const { resolve } = require('path')
const fail = require('webpack-fail-plugin')
const config = {
entry: './docs/index.ts',
output: {
filename: 'bundle.js',
path: resolve(__dirname, 'docs-build')
},
resolve: {
extensions: [ '.ts', '.js' ]
},
devtool: 'inline-source-map',
module: {
rules: [
{
enforce: 'pre',
test: /\.js$/,
loader: 'source-map-loader'
},
{
test: /\.ts$/,
loader: 'ts-loader'
},
{
test: /\.scss$/,
use: [
'style-loader',
{
loader: 'css-loader',
options: {
sourceMap: true
}
},
'sass-loader'
]
}
]
},
plugins: [
fail
]
}
module.exports = config
答案 0 :(得分:6)
如果有人正在寻找这个答案的解决方案。使用import
是最好的选择 - 在输出import
vs require
时,它将被输入并允许模块捆绑器(如Rollup和Webpack 3+)进行优化:
您需要创建raw-loader.d.ts
并确保它包含在您的tsconfig.json
文件中。输入以下内容:
declare module '!!raw-loader!*' {
const contents: string
export = contents
}
tsconfig.json
:
{
"compilerOptions": {
"types": ["raw-loader.d.ts", "node"]
}
}
答案 1 :(得分:2)
以下情况似乎正在发挥作用:
let person = Person()
let path = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent("person").path
let personWasUploaded: Bool = NSKeyedArchiver.archiveRootObject(person, toFile:path)
print(path)
print("person uploaded: \(personWasUploaded)")
但我不确定这是多么正确。我很想找到一些关于装载机的顺序和机制的文档。
另外,我希望通过使用import DemoComponent from './demo'
const demoCode = require('!!raw-loader!./demo')
语句来保持一致。但是如果我进行直接转换,TypeScript就会抱怨它:
import
错误很简单
import DemoComponent from './demo'
import demoCode from '!!raw-loader!./demo'
答案 2 :(得分:1)
对于您的错误:
raw-loader.d.ts
:
declare module '!!raw-loader!*' {
const contents: string
export default contents
}