javascript - webpack - transpilera 1 ts-fil utan att bunta den (2 poster)
Sammanfattning
(vue-filer) + background.ts => ...[webpack]... => (bundlade vue-filer) + background.js
kan inte köra background.js
förväntade att background.js endast skulle innehålla "console.log('test');"
Jag har ett Vue-projekt med webpack och TypeScript.
Jag vill att mitt byggsteg ska producera en "background.js"-fil utöver [vue JS-relaterade filer].
Jag har en källfil i TypeScript: "background.ts".
Genom vue.config.js lade jag till en webpack-ingång "background".
Det skapar faktiskt en fil "background.js" som jag hade förväntat mig
men det är buntat (tror jag) och det kan inte köras av ett Chrome-tillägg.
För tillfället vill jag bara ha en fil som heter "background.js" som kör instruktionen "console.log('test');" som den innehåller när skriptet anropas.
Tack, webpack är helvetet
redigera: lägga till filer:
// vue.config.js
const CopyWebpackPlugin = require('copy-webpack-plugin');
module.exports = {
filenameHashing: false,
chainWebpack: config => {
// add your custom entry point
config
.entry('background')
.add('./src/background.ts');
},
configureWebpack: {
plugins: [
new CopyWebpackPlugin([
{ from: 'manifest.json', to: 'manifest.json', flatten: true },
]),
]
}
}
innehåll av "$vue inspect" $vue inspect > https://pastebin.com/6F3zwLhC
Vad jag försökte:
exportera en funktion istället för min vanliga kod:
export default function() { console.log("gboDebug: background.ts dans export function"); }// istället för bara
console.log("gboDebug: background.ts dans export function");i slutet av filen lägger jag till detta eftersom jag såg det någonstans:
export default null;kontrollerade att min console.log fanns i background.js-buntade filen
- klistrade in resultatet av background.js i navigatorn
- lekte med den globala variabeln webpackJsonp som skripten skapar
Vad jag tänkte på:
- ha ett npm-skript som först 1-buntar vue-webpack och sedan 2-transpilerar min fil med babel-loader
leker med bibliotekets utmatningsalternativ i webpack men jag tror att det gör koden tillgänglig för användning i en variabel, det kör inte automatiskt koden när den laddas
- webpack-utdata i IIFE: https://webpack.js.org/configuration/output/#outputiife
Svar #1
Kort sagt - du behöver inte en bundler för att transpila en enskild TypeScript-fil. Använd bara tsc.
Specifikt för denna fråga där Vue-appen används som en del av ett Chrome-tillägg, kan det vara vettigt att separera byggandet av en app och filer relaterade till tillägget.
Ett annat möjligt alternativ är att använda något som Vue CLI Browser Extension Plugin.